用户登录后服务器给客户端返回一个token,token存在客户端,每次请求都带上这个token,如果token过期了只能重新登录获得新的token;假如我的token有效时间是5分钟,用户在使用过程中每5分钟又要登录一次,请问大家是如何给token续期的呢?每次请求都给客户端返回一个新的token吗?
用户登录后服务器给客户端返回一个token,token存在客户端,每次请求都带上这个token,如果token过期了只能重新登录获得新的token;假如我的token有效时间是5分钟,用户在使用过程中每5分钟又要登录一次,请问大家是如何给token续期的呢?每次请求都给客户端返回一个新的token吗?
在服务端保存token的过期时间,当接收到一个新请求时,如果这个token没有过期,就给这个token的过期时间增加一段有效期,用户继续使用原有token访问,并不需要每次都返回一个新token。过期后才需要重新登录并返回新的token。
1 回答520 阅读✓ 已解决
1 回答850 阅读
JWT 的特性导致无法续期,因为过期时间已经写在 Token 里了,你不可能主动通知所有使用这个 Token 的客户端都更新……
正确的做法应该是用
RefreshToken
机制来让用户无感知。其实上面 @悟者 说的是有道理的,但没必要每次都返回新的,客户端判断快要过期的时候再去后台刷新就好了。
你要是想要实现服务端单端就能主动续约那种,那为啥非得用 JWT?