目录
1.解决方案
无感登录实际上就是无感刷新 token。
1.在响应器中拦截,判断 token 返回过期后,调用刷新 token 的接口。
2.后端返回过期时间,前端判断 token 的过期时间,去调用刷新 token 的接口。
3.写一个定时器,定时刷新 token。
我们常用的第一种方法实现无感登录。
2.实现流程
1.登录流程
用户输入用户名和密码进行登录。
后端验证用户信息,如果验证通过,返回一个 token 和 refresh_token。
前端将 token 和 refresh_token 保存在本地(例如 localStorage)。
2.拦截响应
在前端,我们可以在响应拦截器中处理返回的响应。
如果返回的状态码为401(未授权),说明 token 已经过期。
3.刷新 token
使用本地保存的 refresh_token 来请求新的 token。
请求时可以携带当前 token 的过期时间,以便后端可以更精确地控制新 token 的过期时间。
4.替换 token
一旦新的 token 返回,前端将其保存,并替换本地旧的 token。
5.处理请求
前端将新的 token 放入未完成的请求中,并重新发送请求。
6.错误处理
如果 refresh_token 也过期了,那么需要重新登录。清除所有过期的 token,然后重新执行登录流程。