最近遇到个需求前端登录后,后端返回token和token有效时间,当token过期时要求用旧token去获取新的token,前端需要做到无痛刷新token,即请求刷新token时要做到用户无感知需求解析当用户发起一个请求时,判断token是否已过期,若已过期则先调refreshToken接口,拿到新的token后再继续执行之前的请求这个问题的难点在于当。
第二个问题就是发请求刷新获取,如果refreshtoken过期了,肯定会返回某个错误,我们先不管这个,我们就假设他是成功返回的,然后去解析json,如果发现按照正确的方法取出来的accesstoken是空的,就认为是refreshtoken已过期其实只要在用户每次登陆的时候刷新一次,accesstokenrefreshtoken过期是很难的,相当。
根据uid拼接key读取出access_token,如果不存在这个用户的token说明用户已经登出5 验证token 判断此token是否属于此uid,判断token是否已经过期,如果过期,则返回refresh_token过期错误,此时用户需要重新登录6 刷新token 如果refresh_token 验证成功,则重新生成access_token和refresh_token,上述有效期以。
需要重新获取code,然后得到access_token即要重新调用授权界面需要用refreshtoken刷新accesstoken如果刷新取到了新的accesstokenrefreshtokenexpirein,需要用这些新的去替换掉关联表中的数据建议每次登陆的时候都用refreshtoken去刷新一次accesstoken。
如果token过期怎么办,就用refreshToken刷新时间当然这里可能还有别的方案比如只生成token,每次请求的时候都刷新过期时间如果长时间没有刷新过期时间,那token就会过期 session就是回话,这是服务端的一种操作当你第一次访问一个web网站的时候,服务端会生成一个session,并有一个sessionid和他对应这个session是。
如未过期,检查缓存中是否有refresh\_token是否被废除,如果有,则生成新的access\_token并返回给客户端,客户端接着携带新的access_token重新调用上面的资源接口 4客户端退出登录或修改密码后,调用中间件注销旧的token中间件删除access\_token和refresh\_token废除,同时清空客户端侧的access\_token和refresh。