ruby-on-rails 如何使用devise-jwt刷新JWT标记

gopyfrb3  于 2023-01-06  发布在  Ruby
关注(0)|答案(2)|浏览(147)

有没有办法刷新Rails中devise-jwt提供的JWT令牌?或者最佳实践是强制用户重新进行身份验证?

w51jfk4q

w51jfk4q1#

我最后做的是这样的:
在我的允许列表中:

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
2admgd59

2admgd592#

不幸的是Devise-jwt不支持刷新令牌,但是您可以在链接implementing jwt refresh token and access token中找到实现刷新令牌的更好方法

相关问题