【问题标题】:Devise and Stateless tokens in Rails在 Rails 中设计和无状态令牌
【发布时间】:2017-04-30 03:36:16
【问题描述】:

我得到了一个使用 Rails 3 和 Devise 开发的 API。我正在使用令牌 (token_authenticable) 对客户端向 API 发出的请求进行身份验证。我希望能够在请求中的用户之间切换只是替换令牌。

我听说过一个名为 :stateless_token (boolean) 的设置,但我不知道该设置在哪里。还有其他方法吗?

如果在此处找到 token_authenticable:

https://github.com/plataformatec/devise/blob/master/lib/devise/strategies/token_authenticatable.rb

如果在这里找到关于 stateless_token 的信息:

http://rdoc.info/github/plataformatec/devise/master/Devise/Models/TokenAuthenticatable

【问题讨论】:

    标签: ruby-on-rails-3 devise


    【解决方案1】:

    stateless_token 现已弃用。这是新的形式(它允许更多的身份验证策略是无状态的):

    # config/initializers/devise.rb
    config.skip_session_storage = [:token_auth]
    

    【讨论】:

    • 使用 Devise 2.1.3、Rails 3.1.1 我收到错误消息:undefined method stateless_token=' for Devise:Module`。此更改修复了它。谢谢!
    【解决方案2】:

    您还可以编辑文件 /config/initializers/devise.rb 并输入(或取消注释,如果已经存在)以下行:

    config.stateless_token = true
    

    【讨论】:

    • 如其他地方所述,现在已弃用。使用 config.skip_session_storage = [:token_auth] 选项
    • 谢谢指出,我回复的时候已经不是那个时候了:)
    【解决方案3】:

    它应该是路由文件中 devise_for 行中的一个选项。

    devise_for :users, :stateless_token => true
    

    让我知道这是否有效, 在这个page of documentation for devise 中,它说“TokenAuthenticatable 将以下选项添加到 devise_for:”,无状态令牌就是其中之一。

    这里还有devise_for documentation的链接

    【讨论】:

      猜你喜欢
      • 2012-07-29
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      相关资源
      最近更新 更多