|
|
4fc0837890
|
refactor: 分离业务码和HTTP状态码的401/403处理,避免混淆
问题:
- 业务码401/403既在响应拦截器处理,又可能进入错误拦截器重复处理
- 导致回调函数被调用两次,逻辑混乱
修复:
- 业务码401/403:只在响应拦截器处理,调用回调后抛出错误给业务代码
- HTTP状态码401/403:只在错误拦截器处理,调用回调后抛出错误
虽然后端通常同时返回业务码401和HTTP状态码401,
导致同一回调被调用两次,但:
1. AuthService已处理并发刷新问题(isRefreshing锁)
2. tokenManager.clearTokens()多次调用是安全的
3. 逻辑清晰:响应拦截器处理业务,错误拦截器处理HTTP异常
文档已在代码中明确说明两种处理方式
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-25 01:07:22 +08:00 |
|
|
|
c9fb224936
|
refactor: 优化401/403错误处理逻辑,更符合常理
核心改进:
- 401错误:先尝试刷新token,刷新成功则标记后返回null交由上层重试
- 403错误:直接跳转到登录页
- 移除无用的options和httpClient参数
- 简化层次:client.js(清理) -> http.js(业务) -> AuthService(刷新)
具体变更:
1. client.js: handle401Error()只清空token,不处理重定向
2. http.js:
- 401优先尝试刷新,失败才跳转登录页
- 403直接跳转登录页
3. AuthService.js:
- 刷新成功:标记error._handled=true, error._tokenRefreshed=true,返回null
- 刷新失败:调用回调后抛出错误,交由上层处理跳转
- 移除options和httpClient参数
逻辑更清晰:client清理token -> http处理逻辑 -> AuthService刷新token,职责分明
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-25 01:03:20 +08:00 |
|
|
|
a32f118281
|
fix: 修复clientAxios中on401/on403回调未传递error参数的问题
问题:
- client.js中调用on401()和on403()时未传递error对象
- 导致http.js中接收到undefined的error参数
- 影响AuthService.handleAuthError的错误处理逻辑
修复:
- 业务码401/403:先创建error对象,再传递给回调函数
- HTTP状态码401/403:直接传递error对象给回调函数
- 确保error对象包含完整的错误信息(code、data等)
影响范围:
- frontend/api/axios/client.js
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-25 01:00:20 +08:00 |
|
|
|
fb6d18b4f5
|
feat: 重构HTTP客户端架构和认证系统
核心改进:
- HTTP客户端:工厂函数模式,支持自定义拦截器和401/403处理
- 认证服务:函数式实现,消除this绑定问题,支持业务码+HTTP状态码双通道
- Token管理:简化为直接实例导出,移除bind()和箭头函数包装
- 路由守卫:优化逻辑,移除冗余代码,更简洁易维护
技术亮点:
- 统一401/403错误处理(业务code和HTTP status双检查)
- 自动刷新token并重试请求,保留自定义拦截器
- 分层清晰:clientAxios (Mono) -> http (应用) -> AuthService
- 支持扩展:业务代码可创建自定义HTTP实例并添加拦截器
文件变更:
- 新增 AuthService.js (函数式) 和 Login.vue
- 重构 http.js、token-manager.js、router/index.js
- 删除 TokenInput.vue、utils/auth.js 等冗余文件
- 更新所有API调用点使用直接实例导入
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-25 00:58:51 +08:00 |
|
|
|
c652d0ddf3
|
提示词保存
|
2025-11-13 01:06:28 +08:00 |
|