Skip to Content
路漫漫其修远兮,吾将上下而求索

双token鉴权

  1. AccessToken(访问令牌)
    • 用于访问受保护的api资源
    • 生命周期短 无状态 无需存储
    • 通常存储在客户端内存中
  2. RefreshToken(刷新令牌)
    • 当AccessToken过期时 专门用于获取新的
    • 生命周期长 与特定用户绑定 服务器需要安全存储其有效性记录
    • 客户端必须安全存储 最佳时间是存储在httpOnly Cookie中 这样可以防止客户端JS脚本(如XSS)读取

工作流

  1. 首次登陆:用户使用用户名和密码登录 服务器验证成功后 返回一个accessToken和一个refreshToken
  2. 正常请求:客户端将AccessToken存储起来 并在后续的每次API请求中 通过Authorzation请求头将其发送给服务器
  3. Token过期:当at国企后 客户端再次用他请求API 服务器会拒绝该请求 并返回一个特定的状态码 通常是401
  4. 拦截401错误:客户端的请求层(如axios拦截器)会捕获这个401错误 此时 不会立即通知用户你已掉线 而是暂停这个失败的请求
  5. 发起刷新请求:拦截器使用refresh token去调用一个专门的刷新接口
  6. 处理刷新结果:
    1. 服务器验证rt有效:返回新的at
    2. 服务器验证rt无效:返回403 意味着用户的登录会话结束
  7. 若刷新成功:则用新的at自动重发刚才的API请求,若失败 则客户端清除认证信息 强制用户登出 并重定向到login页面
Last updated on