ruby-on-rails - 如何使用 devise-jwt 刷新 JWT 令牌
问题描述
有没有办法在 Rails中刷新devise-jwt提供的 JWT 令牌?还是强制用户重新进行身份验证的最佳做法?
解决方案
我最终做的是:
在我的许可名单中:
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
推荐阅读
- linux - 如何在linux中的文件中添加带有特定单词的新列?
- cassandra - ReadTimeout:来自服务器的错误:code=1200 [协调节点超时等待副本节点的响应]
- javascript - SQLite 插入方法写入未识别的值
- r - 使用 dplyr 查找数据框中不同级别的变量数量?
- vba - AddressEntry 对象是否具有类似 Index Number 的属性来查找同名人员?
- django - django 密码更改完成失败
- java - 如何在 JList 中选择行,其中每个单元格包含包含 JTextArea 的 JPanel
- javascript - 如何正确拆分 Vuejs 组件
- c# - gridview 列之间的计算
- numeric - arccos((sin(x)^2)+cos(x)^2) 对于某些角度不为 0