我正在开发一个网络前端来配置硬件设备(几乎像路由器),它运行一个 nodejs 后端来为配置的 Angular 前端提供服务。我使用 JWT 来保护对后端的无状态请求。一个功能是通过前端设置系统时间,方法是向后端发出命令,设置本地机器时间,以处理时区。问题是,当时间更改超过过去 30 分钟时,用户会因 session 超时而注销。解决它的最佳方法是什么?我的方法是使用刷新 token 将超时设置为无限期,更改系统时间并将超时改回 30 分钟。还有其他想法吗?谢谢。
最佳答案
如果你问我,当系统时间可以改变时在 JWT 中使用过期时间是没有意义的。所以我的选择是:
- 完全不使用过期时间
- 使用刷新 token
- 撤销所有已发行的 token
- 时间历史:通过计算旧代币的发行日期来接受旧代币。您可以通过添加唯一且递增的 jti
标识符来了解 token 何时发出。当系统时间改变时,存储当前jti值和旧时间与当前时间的差值
jti - time diff
超过最大过期时间可以清空列表
关于angularjs - 系统时间更改后 JWT 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43040006/