【问题标题】:Doorkeeper with variable token expiration具有可变令牌到期的门卫
【发布时间】:2015-07-01 08:15:54
【问题描述】:

我在我的应用程序上使用Doorkeeper,现在我需要将access_token_expires_in 设置为变量,具体取决于用户。

此值直接存储在用户模型上,但我找不到任何方法来使用此变量创建令牌。这是我测试的一部分(没有功能)

require 'error'

Doorkeeper.configure do

  orm :active_record

  resource_owner_from_credentials do |routes|
    request.params[:user] = {:email => request.params[:username], :password => request.params[:password]}
    request.env["devise.allow_params_authentication"] = true

    user = User.where(email: params[:username]).first
    if user.nil? #|| !user.valid_password?(params[:password])
      false
    else
      access_token_expires_in user.access_token_duration
      user
    end
  end
end

我有这个(完全正常的)错误:

NoMethodError (undefined method `access_token_duration' for #<User:0x007fed1c062898>)

我可以在 auth_access_token 已经创建时直接使用我的自定义值更新它,但它有点脏。

有人知道另一种方法吗?

【问题讨论】:

    标签: ruby-on-rails token doorkeeper


    【解决方案1】:

    这么简单的事情(我没有重启我的服务器)

    require 'error'
    
    Doorkeeper.configure do |c|
    
      orm :active_record
    
      resource_owner_from_credentials do |routes|
        request.params[:user] = {:email => request.params[:username], :password => request.params[:password]}
        request.env["devise.allow_params_authentication"] = true
    
        user = User.where(email: params[:username]).first
        if user.nil? #|| !user.valid_password?(params[:password])
          false
        else
          c.access_token_expires_in user.access_token_duration
          user
        end
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      相关资源
      最近更新 更多