token过期该怎么办?
token过期,就要重新获取。那么重新获取有两种方式,一是重复第一次获取token的过程(比如登录,扫描授权等),这样做的缺点是用户体验不好,每一小时强制登录一次几乎是无法忍受的。那么还剩第二种方法,那就是主动去刷新token. 主动刷新token的凭证是refresh token,也是加密字符串,并且和token是相关联的。相比获取各种资源的token,refresh token的作用仅仅是获取新的token,因此其作用和安全性要求都大为降低,所以其过期时间也可以设置得长一些。
-
客户端使用用户名密码进行认证
-
服务端生成有效时间较短的 Access Token(例如 10 分钟),和有效时间较长的 Refresh Token(例如 7 天)
- 后端通常会限制每个refresh_token只能获取一次新的Token
- 如果refresh_token过期,需要用户重新登录
-
客户端访问需要认证的接口时,携带 Access Token
如果 Access Token 没有过期,服务端鉴权后返回给客户端需要的数据 如果携带 Access Token 访问需要认证的接口时鉴权失败(例如返回 401 错误),则客户端使用 Refresh Token 向刷新接口申请新的 Access Token 如果 Refresh Token 没有过期,服务端向客户端下发新的 Access Token 客户端使用新的 Access Token 访问需要认证的接口
refresh token需要过期时间么?
客户端需要保存token和refresh token,以便下一次访问能继续。如果客户端是浏览器,那么两个token都需要设置过期时间;但是可以设置得长一点,可以以天为单位(例如7天、15天);如果客户端是一个服务器,那么refresh token可以永久有效,直到下一次登录,refresh token本身被更新为止。