如何使用devise-jwt刷新JWT令牌

时间:2018-12-13 12:10:40

标签: ruby-on-rails devise jwt

有没有一种方法可以刷新Rails中devise-jwt提供的JWT令牌?还是强迫用户重新认证的最佳实践?

1 个答案:

答案 0 :(得分:0)

我最终要做的是这样

在我的允许清单中:

def self.jwt_revoked?(payload, user)
  # Hook in here to refresh token
  token = user.allowlisted_jwts.where(payload.slice('jti', 'aud')).first
  if token.present? && (SOME LOGIC ABOUT YOUR EXPIRATION HERE)
    token.update_column(:exp, Time.now + SOME TIME)
  end
  token.blank?
end

我将检查到期时间。例如,如果令牌持续60秒,而您想刷新至少30秒,则要刷新。您可以这样写:

if token.present? && token.exp < (Time.now+30.seconds)
  token.update_column(:exp, Time.now+60.seconds)
end