jra*_*amm 5 javascript jwt ecmascript-6
我正在使用 JWT 来验证我的 API 服务器。JWT 由外部身份验证服务器(在本例中为 keycloak)发出,并且典型的过期时间约为 5 分钟 (IIRC),然后前端应使用这些令牌向 API 发出请求。
在发出每个请求之前,我一直在尝试检查前端令牌的到期日期。如果令牌已过期,我将使用刷新令牌首先获取新的身份验证令牌,然后发出请求。
基本工作流程是:
== 登录 == 1. 获取身份验证令牌 2. 存储到期 (exp) 日期(以 UTC 秒为单位)
== API 请求 == 1. 检查到期日期 ( isExpired = expiryDate <= Math.floor(Date.now() / 1000)) 2. 如果正常 => 发出请求 3. 否则,刷新身份验证令牌并重做请求。
像这样检查日期是不好的做法吗?确保请求成功的替代方法是什么?
我问这个问题是因为我在某些机器上看到了问题,过期检查总是返回false(它没有过期)......
依赖前端检查的问题是您无法控制用户计算机上的本地时间,这可能是错误的。
更可靠的方法可能是照常发出请求,如果令牌已过期,则从服务器返回错误消息。对于每个请求,如果从服务器收到错误消息,则客户端可以触发刷新过程,然后使用新令牌重新提交原始请求。
| 归档时间: |
|
| 查看次数: |
7313 次 |
| 最近记录: |