Token ⽤于进⾏接⼝鉴权,但 Token 具有由后端设置的过期时间,当 Token 过期后,就⽆法再请求接⼝数据了。 项⽬中后端设置的过期时间为 24 h,测试时我们可以⼿动修改 token 值让 Token 失效。 处理⽅式:

⽅式1:⽤户重新登录,获取新的 Token 即可。但当过期时间较短时,⽤户每次都要重新登录,体验不好。

为了提⾼⽤户信息安全性,Token 的过期时间都⽐较短(就算万⼀泄露了,过⼀会⼉就过期⽆效 了)

⽅式2:根据⽤户信息,⾃动给⽤户⽣成新的 Token ,减少重新登录次数。

观察前⾯的功能,接⼝的响应信息中具有三个与 Token 相关的信息。

access_token:当前使⽤的 Token ,⽤于访问需要授权的接⼝。

expires_in:access_token 的过期时间

refresh_token:刷新获取新的 access_token

刷新 Token 的⽅法有两种:

⽅法⼀:

在每个请求发起前进⾏拦截,根据 expires_in 判断 token 是否过期,如果过期则刷新后再继续请求接⼝。

优点:请求前拦截处理,能节省请求次数。 缺点:后端需要提供 Token 过期时间字段(例如 expires_in),并且需要结合计算机本地时间判断, 如果计算机时间被篡改(特别是⽐服务器时间满)时,拦截会失败。

⽅法⼆:

在每个请求响应后进⾏拦截,如果发现请求失败(Token 过期导致的)时,刷新 Token 再重新请求接⼝。

优点:⽆需 Token 过期时间字段,⽆需判断时间。 缺点:多消耗⼀次请求。 这⾥推荐使⽤⽅法⼆,相⽐⽅发⼀,⽅法⼆更加稳定,不会出现意外的问题。