首页 > 解决方案 > 如何使用 devise-jwt 刷新 JWT 令牌

问题描述

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

标签: ruby-on-railsdevisejwt

解决方案


我最终做的是:

在我的许可名单中:

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

推荐阅读