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

Suc*_*uch 5 ruby-on-rails devise jwt

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

Dav*_*ker 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
Run Code Online (Sandbox Code Playgroud)

在那里我会检查过期时间。例如,如果您的令牌持续 60 秒,并且您希望刷新至少 30 秒的令牌。你可以写:

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