查看源代码 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 选项覆盖。支持以下值

我们建议开发人员考虑使用 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"