带有 Rails API 的 Auth0

Kli*_*sey 6 ruby-on-rails auth0

我没有特定的技术问题,但在理解使用 Auth0 进行身份验证然后使用返回的配置文件访问 rails API 的体系结构时遇到了一般问题。

我在 React Native 中使用 Auth0.Lock 并且可以成功注册并登录到我的 React Native 应用程序并存储返回的配置文件和令牌。

在 Rails 方面,我根据实现 JWT 身份验证的说明创建了一个 API 并设置了 Knock ( https://github.com/nsarno/knock )。

我不明白的是我在 Rails 中的用户模型和我在 Auth0 中的数据库之间的链接。Auth0 文档或 Knock 文档都不清楚这种关联是如何发生的。

谢谢克雷格

Joã*_*elo 0

通过查看可用的文档,以下内容应该是可能的。

通过定义适当的内容scope,您可以指示 Auth0 在作为成功身份验证结果返回的 ID 令牌中包含特定信息(声明)。

如果所有用户配置文件信息都包含在令牌本身中,那么您可以使用 Knock,这样它将从 JWT 负载本身创建用户模型实例,而无需查询其他存储。


默认情况下,Knock 假定有效负载作为包含实体 ID 的主题(子)声明,并在模型上调用 find 。如果您想修改此行为,请在实体模型中实现一个类方法,from_token_payload该方法采用 argument 中的有效负载

class User < ActiveRecord::Base
  def self.from_token_payload payload
    # Returns a valid user, `nil` or raise
  end
end
Run Code Online (Sandbox Code Playgroud)

(来源:敲门定制


使用这种方法,令牌本身就足够了,Rails API 和 Auth0 之间没有进一步的交互。用户模型是从令牌创建的,并且 Auth0 数据库不直接由 Rails API 访问,它只是使用存储在那里的信息和令牌上的表面。

应该可以采用其他方法与 Auth0 数据库进行更直接的交互。如果您需要沿着这条路线走下去,您应该查看管理 API(用户相关端点),将其作为从您自己的应用程序与 Auth0 数据库进行交互的方式。