依存关系有可能在elixir中创建数据库表吗?

时间:2019-03-19 19:54:26

标签: elixir metaprogramming phoenix-framework ecto

我正在尝试在elixir / phoenix中构建一个简单的身份验证系统,该系统可以用作任何phoenix应用程序中的依赖项。

我已经按照programming-phoenix-1.4书中的步骤进行操作,并很容易地建立了基本的身份验证系统。

在本书中,他们讨论了将用户的敏感和非敏感信息分离到应用程序和数据库中的不同位置。所有非敏感信息(用户名,名称等)都放在users表中,而敏感信息(电子邮件,密码等)都放在credentials表中。

基于此,我想知道是否有可能将auth逻辑分离到其自己的应用程序中。

此身份验证模块将需要:

  1. 在所需应用程序的数据库中创建一个credentials
  2. 根据从父应用传递的信息更新所述表格
  3. 包含一个auth plug,能够从父应用程序更新conn(例如,通过:current_user函数将conn添加到assign li>

不幸的是,目前我正处于第一个障碍。我不确定是否需要一个可以创建数据库表的模块。

我想如果第1步可行,那么第2步将很简单。步骤3看起来可以使用Router.forward/4函数来完成。

1 个答案:

答案 0 :(得分:1)

可以通过给依赖项指定repo模块的名称。 GuardianDB就是一个例子,它创建一个表来存储有效令牌。 GuardianDB的配置如下所示:

config :guardian, Guardian.DB,
  repo: MyApp.Repo,
  # default
  schema_name: "guardian_tokens",
  # default: 60 minutes
  sweep_interval: 60

您可以将该库用作指南github

对于创建插件,Guardian(也是Elixir的身份验证库)也是如此。您可以找到代码here