每周五更新
This commit is contained in:
104
power_leasing/✅ Token存储降级方案修复说明.md
Normal file
104
power_leasing/✅ Token存储降级方案修复说明.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# ✅ Token 存储降级方案 - 修复说明
|
||||
|
||||
## 📌 问题描述
|
||||
|
||||
**现象:** 本地调试正常,但在其他电脑上登录后 `localStorage.leasToken` 没有存储成功。
|
||||
|
||||
**根本原因:** 项目使用了 AES-GCM 加密存储,依赖 Web Crypto API,在 HTTP 环境或旧版浏览器中不可用。
|
||||
|
||||
## ✅ 修复方案
|
||||
|
||||
实现了**三层降级存储策略**,确保在任何环境下都能正常存储 token:
|
||||
|
||||
```
|
||||
优先: AES-GCM 加密存储 (HTTPS + 现代浏览器)
|
||||
↓ 失败自动降级
|
||||
降级: 明文 JSON 存储 (HTTP 环境/旧浏览器)
|
||||
↓ 失败保底
|
||||
保底: 内存缓存 (至少当前会话可用)
|
||||
```
|
||||
|
||||
## 🔧 修改的文件
|
||||
|
||||
**核心修复:**
|
||||
- [src/utils/request.js](src/utils/request.js) - Token 管理逻辑
|
||||
- `initTokenCache()` - 智能读取(加密→明文→内存)
|
||||
- `updateToken()` - 智能存储(加密→明文→内存)
|
||||
- `clearToken()` - 完全清除(加密+明文+内存)
|
||||
|
||||
## 📊 兼容性
|
||||
|
||||
| 环境 | 存储方式 | 状态 |
|
||||
|------|----------|------|
|
||||
| HTTPS + 现代浏览器 | ✅ AES-GCM 加密 | 最安全 |
|
||||
| HTTP 环境 | ⚠️ 明文 JSON | 自动降级 |
|
||||
| 旧版浏览器 (IE11/360兼容模式) | ⚠️ 明文 JSON | 自动降级 |
|
||||
| 隐私模式 | 💾 内存缓存 | 会话内可用 |
|
||||
|
||||
## 🧪 验证方法
|
||||
|
||||
### 开发环境测试
|
||||
|
||||
```bash
|
||||
npm run serve
|
||||
```
|
||||
|
||||
登录后在浏览器控制台检查:
|
||||
|
||||
```javascript
|
||||
// 检查是否存储成功
|
||||
console.log('Token 已存储:', !!localStorage.getItem('leasToken'));
|
||||
|
||||
// 查看存储模式(开发环境会有日志)
|
||||
// HTTPS: [Token缓存] ✅ 已保存到加密存储
|
||||
// HTTP: [Token缓存] ✅ 已保存到明文存储(降级模式)
|
||||
```
|
||||
|
||||
### 测试登录持久化
|
||||
|
||||
```javascript
|
||||
// 1. 登录后刷新页面
|
||||
location.reload();
|
||||
|
||||
// 2. 应该保持登录状态,不需要重新登录
|
||||
```
|
||||
|
||||
### 在问题电脑上验证
|
||||
|
||||
1. 清除旧数据: `localStorage.clear()`
|
||||
2. 重新登录
|
||||
3. 检查 localStorage: `console.log('Token:', !!localStorage.getItem('leasToken'))`
|
||||
4. 刷新页面验证登录状态保持
|
||||
|
||||
## 🔍 控制台日志说明
|
||||
|
||||
### HTTPS 环境(加密存储)
|
||||
```
|
||||
[Token缓存] ✅ 已保存到加密存储
|
||||
[Token缓存] ✅ 从加密存储加载成功
|
||||
```
|
||||
|
||||
### HTTP 环境(自动降级)
|
||||
```
|
||||
[Token缓存] ⚠️ 加密存储失败,降级为明文存储
|
||||
[Token缓存] ✅ 已保存到明文存储(降级模式)
|
||||
[Token缓存] ✅ 从明文存储加载成功(降级模式)
|
||||
```
|
||||
|
||||
## 🔒 安全说明
|
||||
|
||||
- **HTTPS 环境**: 自动使用 AES-GCM 加密,安全性高 ✅
|
||||
- **HTTP 环境**: 降级为明文存储,建议尽快升级到 HTTPS ⚠️
|
||||
- **生产环境**: 强烈推荐使用 HTTPS 部署
|
||||
|
||||
## ✅ 向后兼容
|
||||
|
||||
- ✅ 完全向后兼容,无需数据迁移
|
||||
- ✅ 自动识别旧的明文 token
|
||||
- ✅ 支持自动升级到加密存储(如果环境支持)
|
||||
|
||||
---
|
||||
|
||||
**修复时间:** 2026-01-08
|
||||
**影响范围:** 所有用户的登录和会话管理
|
||||
**紧急程度:** 建议尽快部署测试
|
||||
Reference in New Issue
Block a user