YY变声器7.0.29绿色版
Token机制虽说很早就出现了,但也就是最近十年内才广泛应用的,而很多新手对于Token和Session何时使用区分不了,虽说听说过Token但不知道其原理是啥以及如何使用。
Token是为了解决什么问题而生的?
在Token机制之前,服务器端验证客户端请求是否合法主要是靠Cookie+Session机制来实现的。服务器端会为每个会话都生成一个Session,在高并发场景下会导致Session文件越来越多,不利于管理。
而Token是服务器端生成的一串加密字符串(具有生命周期),分配给客户端作为令牌使用,Token的好处就是减轻了服务器端的压力,因为Token是由客户端存储的,而且是无状态的。
Token超时问题如何解决?
服务器端生成的Token是有生命周期的(过期时间),如果我们拿着已过期的Token去服务器端验证肯定是无法通过的,所以我们要在Token过期之前主动更新Token,方案如下:
1、客户端存储Token时要记录Token的过期时间
客户端拿到服务器生成返回的Token后,需要将Token临时存储起来(SessionStorage、LocalStorage),然后客户端定时检测Token是否已过期,如果过期了则主动向授权服务器重新发起认证请求。
2、由服务器端主动通知客户端进行Token更新
客户端每次的请求中都会带上Token,服务器会对此Token进行校验,如果服务器端发现此Token将会在很短时间内失败,那就重新生成Token并附加到响应体中,客户端获取服务器响应数据时看下是否有Token,如果有则覆盖本地旧的Token即可。