查看源代码 mix phx.gen.auth (Phoenix v1.7.14)
为资源生成身份验证逻辑和相关视图。
$ mix phx.gen.auth Accounts User users
第一个参数是上下文模块,后面跟着模式模块及其复数名称(用作模式表名)。
有关更多信息和安全注意事项,请参阅 mix phx.gen.auth
指南。
LiveView 与传统控制器和视图
身份验证视图可以通过传递 --live
选项来生成以使用 LiveView,或者可以通过传递 --no-live
来使用传统的 Phoenix 控制器和视图。
如果未提供这些选项中的任何一个,将显示提示。
如果您计划在应用程序中其他地方使用 LiveView,建议使用 --live
选项。在 LiveView 之间导航的用户体验可以被严格控制,允许您让用户导航到身份验证视图,而无需每次都触发新的 HTTP 请求(这会导致完整页面加载)。
密码散列
密码散列机制默认为 Unix 系统的 bcrypt
和 Windows 系统的 pbkdf2
。这两个系统都使用 Comeonin 接口。
密码散列机制可以通过 --hashing-lib
选项覆盖。支持以下值
bcrypt
- bcrypt_elixirpbkdf2
- pbkdf2_elixirargon2
- argon2_elixir
我们建议开发人员考虑使用 argon2
,它是最健壮的 3 种方法之一。缺点是 argon2
非常占用 CPU 和内存,您需要更强大的实例才能运行您的应用程序。
有关选择这些库的更多信息,请参阅 Comeonin 项目。
Web 命名空间
默认情况下,控制器和 HTML 视图将以模式名称作为命名空间。您可以通过传递带有模块名称的 --web
标志来自定义 web 模块命名空间,例如
$ mix phx.gen.auth Accounts User users --web Warehouse
这将生成嵌套在 MyAppWeb.Warehouse
命名空间中的控制器、视图、模板和相关测试
lib/my_app_web/controllers/warehouse/user_auth.ex
lib/my_app_web/controllers/warehouse/user_confirmation_controller.ex
lib/my_app_web/controllers/warehouse/user_confirmation_html.ex
lib/my_app_web/controllers/warehouse/user_confirmation_html/new.html.heex
test/my_app_web/controllers/warehouse/user_auth_test.exs
test/my_app_web/controllers/warehouse/user_confirmation_controller_test.exs
- 等等...
多次调用
您可以多次调用此生成器。这通常在您拥有经过不同身份验证工作流程的独立资源时很有用。
$ mix phx.gen.auth Store User users
$ mix phx.gen.auth Backoffice Admin admins
二进制 ID
--binary-id
选项会导致生成的迁移对它的主键和外键使用 binary_id
。
默认选项
此生成器使用应用程序 :generators
配置中提供的默认选项。以下是默认值
config :your_app, :generators,
binary_id: false,
sample_binary_id: "11111111-1111-1111-1111-111111111111"
您可以通过提供相应的开关来覆盖每次调用的这些选项,例如 --no-binary-id
来使用普通 ID,尽管默认配置。
自定义表名
默认情况下,迁移和模式的表名将是为资源提供的复数名称。要自定义此值,可以提供 --table
选项。例如
$ mix phx.gen.auth Accounts User users --table accounts_users
这将导致生成的表被命名为 "accounts_users"
和 "accounts_users_tokens"
。