我正在开发一个网络前端来配置硬件设备(几乎像路由器),它运行一个nodejs后端来为配置提供Angular前端。我使用JWT来保护对后端的无状态请求。一个功能是通过前端设置系统时间,通过向后端发出命令来设置本地机器时间,以处理时区。问题是,当时间变化超过过去的30分钟时,用户会因会话超时而退出。什么是解决它的最佳方法?我的方法是使用刷新令牌将超时设置为无限期,更改系统时间并将超时更改回30分钟。还有其他想法吗?谢谢。
答案 0 :(得分:0)
您可以实现刷新令牌。因此,只要访问令牌到期,用户就可以使用刷新令牌请求新的访问令牌。
答案 1 :(得分:0)
如果你问我,在系统时间改变时使用JWT中的到期时间是没有意义的。所以我的选择是:
- 不要使用到期时间
- 使用刷新令牌
- 撤销所有已发行的令牌
- 时间历史记录:通过计算发布日期来接受旧令牌。您可以通过添加唯一且增量jti
标识符来了解何时发出令牌。当系统时间改变时,存储当前的jti值以及旧时间和当前时间之间的差值
jti - time diff
您可以在超过最长到期时间时清空列表