feat: 功能
This commit is contained in:
@@ -1,100 +0,0 @@
|
||||
import { useCache } from '@gold/hooks/web/useCache'
|
||||
|
||||
/**
|
||||
* Token 统一管理模块
|
||||
*
|
||||
* 优先级顺序:
|
||||
* 1. 手动输入的 dev token (sessionStorage)
|
||||
* 2. 正式登录的 token (wsCache)
|
||||
* 3. 环境变量 VITE_DEV_TOKEN
|
||||
*/
|
||||
|
||||
// sessionStorage 中的手动 token key
|
||||
const DEV_MANUAL_TOKEN_KEY = 'DEV_MANUAL_TOKEN'
|
||||
|
||||
// 获取缓存实例
|
||||
let wsCache = null
|
||||
function getCache() {
|
||||
if (!wsCache) {
|
||||
wsCache = useCache().wsCache
|
||||
}
|
||||
return wsCache
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取完整的 Authorization Header 值
|
||||
* @returns {string} Bearer token 或空字符串
|
||||
*/
|
||||
export function getAuthHeader() {
|
||||
const token = getToken()
|
||||
return token ? `Bearer ${token}` : ''
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 token
|
||||
* @returns {string} token 字符串
|
||||
*/
|
||||
export function getToken() {
|
||||
// 1. 优先使用手动输入的 dev token
|
||||
const manualToken = sessionStorage.getItem(DEV_MANUAL_TOKEN_KEY)
|
||||
if (manualToken) {
|
||||
return manualToken
|
||||
}
|
||||
|
||||
// 2. 使用正式登录的 token(从 wsCache 读取)
|
||||
try {
|
||||
const cache = getCache()
|
||||
const accessToken = cache.get('ACCESS_TOKEN') || cache.get('access_token')
|
||||
|
||||
if (accessToken) {
|
||||
return accessToken
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('获取 wsCache 失败:', e)
|
||||
}
|
||||
|
||||
// 3. 兜底:环境变量中的 token
|
||||
const envToken = import.meta?.env?.VITE_DEV_TOKEN
|
||||
if (envToken) {
|
||||
return envToken
|
||||
}
|
||||
|
||||
return ''
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置手动输入的 dev token
|
||||
* @param {string} token
|
||||
*/
|
||||
export function setDevToken(token) {
|
||||
if (token) {
|
||||
sessionStorage.setItem(DEV_MANUAL_TOKEN_KEY, token)
|
||||
} else {
|
||||
sessionStorage.removeItem(DEV_MANUAL_TOKEN_KEY)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取手动输入的 dev token(用于显示)
|
||||
* @returns {string}
|
||||
*/
|
||||
export function getDevToken() {
|
||||
return sessionStorage.getItem(DEV_MANUAL_TOKEN_KEY) || ''
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除所有 token
|
||||
*/
|
||||
export function clearAllTokens() {
|
||||
sessionStorage.removeItem(DEV_MANUAL_TOKEN_KEY)
|
||||
try {
|
||||
const cache = getCache()
|
||||
cache.delete('ACCESS_TOKEN')
|
||||
cache.delete('access_token')
|
||||
cache.delete('REFRESH_TOKEN')
|
||||
cache.delete('refresh_token')
|
||||
} catch (e) {
|
||||
console.warn('清除 wsCache 失败:', e)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user