109 lines
2.2 KiB
Markdown
109 lines
2.2 KiB
Markdown
# 全局工具模块 (Monorepo Utils)
|
||
|
||
此目录包含可在 monorepo 各个应用中复用的全局工具函数。
|
||
|
||
## 📁 目录结构
|
||
|
||
```
|
||
utils/
|
||
├── token-manager.js # Token 统一管理工具
|
||
└── README.md # 本文件
|
||
```
|
||
|
||
## 🚀 使用方式
|
||
|
||
### Token 管理 (`token-manager.js`)
|
||
|
||
在应用中使用全局 token 管理工具:
|
||
|
||
```javascript
|
||
// 导入 token 管理工具
|
||
import {
|
||
getToken,
|
||
setToken,
|
||
clearAllTokens,
|
||
getAuthHeader
|
||
} from '@gold/utils/token-manager'
|
||
|
||
// 获取 token
|
||
const token = getToken()
|
||
|
||
// 设置 token
|
||
setToken({
|
||
accessToken: 'xxx',
|
||
refreshToken: 'yyy'
|
||
})
|
||
|
||
// 获取 Authorization Header
|
||
const header = getAuthHeader() // Bearer xxx
|
||
|
||
// 清空所有 token
|
||
clearAllTokens()
|
||
```
|
||
|
||
## 📝 API 说明
|
||
|
||
### Token 管理函数
|
||
|
||
#### `getToken()`
|
||
获取访问令牌(按优先级读取)
|
||
|
||
**返回值:** `string` - token 字符串或空字符串
|
||
|
||
#### `getAccessToken()`
|
||
获取访问令牌(别名,兼容旧代码)
|
||
|
||
**返回值:** `string` - token 字符串或空字符串
|
||
|
||
#### `getRefreshToken()`
|
||
获取刷新令牌
|
||
|
||
**返回值:** `string | null` - 刷新令牌或 null
|
||
|
||
#### `setToken(tokens)`
|
||
设置访问令牌和刷新令牌
|
||
|
||
**参数:**
|
||
- `tokens.accessToken` (string, 可选): 访问令牌
|
||
- `tokens.refreshToken` (string, 可选): 刷新令牌
|
||
|
||
#### `clearAllTokens()`
|
||
清除所有 token(包括 dev token、access token、refresh token)
|
||
|
||
#### `removeToken()`
|
||
删除 token(别名,调用 `clearAllTokens()`)
|
||
|
||
#### `getAuthHeader()`
|
||
获取完整的 Authorization Header 值
|
||
|
||
**返回值:** `string` - `Bearer token` 或空字符串
|
||
|
||
#### `setDevToken(token)`
|
||
设置手动输入的 dev token(用于开发测试)
|
||
|
||
**参数:** `token` (string) - dev token
|
||
|
||
#### `getDevToken()`
|
||
获取手动输入的 dev token
|
||
|
||
**返回值:** `string` - dev token 或空字符串
|
||
|
||
## 🔄 Token 存储优先级
|
||
|
||
1. **手动输入的 dev token** (sessionStorage) - 最高优先级
|
||
2. **正式登录的 token** (wsCache/localStorage)
|
||
3. **环境变量 VITE_DEV_TOKEN** - 兜底
|
||
|
||
## 📦 在 Vite 配置中使用
|
||
|
||
确保在 `vite.config.js` 中配置了 `@gold` 别名:
|
||
|
||
```javascript
|
||
resolve: {
|
||
alias: {
|
||
'@gold': fileURLToPath(new URL('../../', import.meta.url))
|
||
}
|
||
}
|
||
```
|
||
|