【问题标题】:Using doorkeeper without session management在没有会话管理的情况下使用门卫
【发布时间】:2015-12-05 05:31:02
【问题描述】:

看来,门卫 gem 假定您有一个会话可以从中拉出当前用户。至少这是我从配置方法resource_owner_authenticator 得到的印象。这是正确的吗?

我希望实现一个无状态(无会话)REST only rails 应用程序,其中用户状态保存在签名的JWT 访问令牌中,并在每次请求时由客户端传递给服务器。我正在使用access_token_generator 为密码授予流程生成签名的 JWT。

另外doorkeeper_authorize! 在数据库中查找访问令牌以验证每个请求并检查令牌过期时间。我宁愿简单地检查 JWT 签名的有效性,然后使用 JWT 有效负载中的 exp claim 验证 JWT 没有过期。

是否可以通过这种方式将 JWT 访问令牌与门卫一起使用?也许我错过了一些明显的东西。我已经查看了doorkeeper-jwt,但它并没有解决这些问题。

【问题讨论】:

    标签: ruby-on-rails rest session oauth-2.0 doorkeeper


    【解决方案1】:

    如果您使用 JWT,为什么还要在 API 服务器中包含 Doorkeeper?相反,只需编写一个 before 过滤器,从 API 调用的标头中获取 JWT,并使用其中的信息来确定调用是否有效和允许。我们将用户在所有 API 调用中的角色放入 JWT 中,并根据角色做出决策。您还可以使用 JWT 中的范围来做出决定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 2011-01-31
      • 1970-01-01
      • 2016-06-30
      • 2016-07-26
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多