当前位置: 首页 > news >正文

token设计方案

常见的 Go Gin Web 项目的 Token 刷新方案设计思路:

---

### 1. 采用双 Token 机制(Access Token + Refresh Token)

- **Access Token**:用于接口鉴权,生命周期较短(如15分钟~1小时),一般用JWT实现。
- **Refresh Token**:用于刷新 Access Token,生命周期较长(如7天~30天),通常存储在数据库或Redis中。

---

### 2. 登录流程

1. 用户登录成功后,服务端生成一对 Access Token 和 Refresh Token。
2. Access Token 通过HTTP响应返回给前端,通常放在响应体或HTTP Only Cookie中。
3. Refresh Token 也返回给前端,建议放在HTTP Only Cookie,防止XSS攻击。

---

### 3. 访问受保护接口

- 前端每次请求时携带 Access Token(如放在 Authorization Header)。
- 服务端校验 Access Token,有效则放行,无效则返回401。

---

### 4. Token 过期处理

- 当前端收到 Access Token 过期(401)时,自动携带 Refresh Token 调用刷新接口(如 `/auth/refresh`)。
- 服务端校验 Refresh Token:
  - 有效且未过期:生成新的 Access Token(可选:也生成新的 Refresh Token),返回给前端。
  - 无效或已过期:要求用户重新登录。

---

### 5. Refresh Token 存储与失效

- Refresh Token 建议存储在数据库或Redis,便于主动失效(如用户登出、修改密码等)。
- 每次刷新时可选择“滑动过期”策略(即刷新时延长有效期),也可选择固定过期时间。

---

### 6. 安全建议

- Refresh Token 只通过HTTP Only Cookie传递,防止被JS获取。
- Access Token 过期时间要短,减少泄露风险。
- 刷新接口要有频率限制,防止暴力攻击。
- 支持Refresh Token黑名单机制,便于主动失效。

---

### 7. 登出/异常处理

- 用户主动登出时,服务端应删除/作废对应的 Refresh Token。
- 检测到异常(如多地登录、密码修改等)时,服务端可主动失效相关 Refresh Token。

---

### 8. 方案流程图

1. 登录 -> 生成 Access Token + Refresh Token
2. 正常请求 -> 校验 Access Token
3. Access Token 过期 -> 用 Refresh Token 换新 Access Token
4. Refresh Token 过期/无效 -> 重新登录

http://www.dtcms.com/a/267798.html

相关文章:

  • 大话网络协议 - HTTP不同版本的演进及其区别
  • 基于Excel的数据分析思维与分析方法
  • Java poi-tl 使用 word 模板 生成 word
  • 人工智能之数学基础:线性回归算法的矩阵参数求导
  • dubbo源码学习2-dubbo协议源码分析
  • C++:编译QXlsx库过程
  • 咕咚运动启动时弹出广告
  • Go语言--语法基础6--基本数据类型--切片类型
  • 【学习篇】SQL复杂查询学习
  • D3 面试题100道之(61-80)
  • React 英语单词消消乐一款专为英语学习设计的互动式记忆游戏
  • Flink ClickHouse 连接器:实现 Flink 与 ClickHouse 无缝对接
  • Scala 简介
  • 探索实现C++ STL容器适配器:优先队列priority_queue
  • 三维目标检测|Iou3D 代码解读一
  • [Qt] visual studio code 安装 Qt插件
  • AI(学习笔记第四课) 使用langchain进行AI开发 load documents(pdf)
  • excel 工作需要会的
  • C++:编译QCustomPlot源码为链接库
  • 【MoE】Buffer Overflow in Mixture of Experts
  • [netty5: WebSocketFrameEncoder WebSocketFrameDecoder]-源码解析
  • QML与C++交互之创建自定义对象
  • 使用PyTorch实现Softmax回归(Mnist手写数字识别)
  • Altium Designer使用入门(非精通)教程 第二章(原理图绘制)
  • Windows内核并发优化
  • 比较两个csv文件的内容是否一致
  • 隐马尔可夫模型(HMM):观测背后的状态解码艺术
  • [01背包]494.目标和
  • SQL128 统计2021年未完成试卷作答数大于1的有效用户
  • Mybatis-Plus使用