依赖项是否可以在elixir中创建数据库表?

问题描述 投票:1回答:1

我试图在elixir / phoenix中构建一个简单的auth系统,可以在任何凤凰应用程序中用作依赖。

我已经按照programming-phoenix-1.4书中的步骤进行了操作,并且很容易设置一个基本的auth系统。

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

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

此auth模块需要:

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

不幸的是,我现在陷入了第一道障碍。我不确定是否可以要求一个可以创建数据库表的模块。

我想如果步骤1可行,第2步将是直截了当的。步骤3看起来可以通过Router.forward/4函数实现。

elixir metaprogramming phoenix-framework ecto
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.