feat: 功能

This commit is contained in:
2025-11-12 22:45:29 +08:00
parent 94c114a44d
commit fc7d2ccea5
41 changed files with 2406 additions and 343 deletions

View File

@@ -1,42 +1,54 @@
import { useCache } from '@gold/hooks/web/useCache'
import { getToken as getTokenFromManager } from './token-manager'
/**
* Token 管理兼容层
*
* @deprecated 此文件已废弃,请直接使用 @gold/utils/token-manager
*
* 为了保持向后兼容,此文件作为兼容层,所有函数都转发到 token-manager.js
* 新代码请直接使用 @gold/utils/token-manager 中的函数
*/
const { wsCache } = useCache()
import {
getToken as getTokenFromManager,
setToken as setTokenFromManager,
getRefreshToken as getRefreshTokenFromManager,
getAccessToken as getAccessTokenFromManager,
removeToken as removeTokenFromManager,
clearAllTokens,
getAuthHeader
} from '@gold/utils/token-manager'
const AccessTokenKey = 'ACCESS_TOKEN'
const RefreshTokenKey = 'REFRESH_TOKEN'
/**
* 获取访问令牌
* @deprecated 使用 @gold/utils/token-manager 中的 getToken() 或 getAccessToken()
*/
export const getAccessToken = getAccessTokenFromManager
// 获取token - 使用统一的 token 管理器
export const getAccessToken = () => {
return getTokenFromManager()
}
/**
* 获取刷新令牌
* @deprecated 使用 @gold/utils/token-manager 中的 getRefreshToken()
*/
export const getRefreshToken = getRefreshTokenFromManager
// 刷新token
export const getRefreshToken = () => {
try {
// 优先从 wsCache 读取
const refreshToken = wsCache.get(RefreshTokenKey) || wsCache.get('refresh_token')
if (refreshToken) {
return refreshToken
}
} catch (e) {
console.warn('获取 refresh token 失败:', e)
}
return null
}
// 设置token
export const setToken = (token) => {
wsCache.set(RefreshTokenKey, token.refreshToken)
wsCache.set(AccessTokenKey, token.accessToken)
}
/**
* 设置令牌
* @deprecated 使用 @gold/utils/token-manager 中的 setToken()
*/
export const setToken = setTokenFromManager
// 删除token
export const removeToken = () => {
wsCache.delete(AccessTokenKey)
wsCache.delete(RefreshTokenKey)
}
/**
* 删除令牌
* @deprecated 使用 @gold/utils/token-manager 中的 clearAllTokens() 或 removeToken()
*/
export const removeToken = removeTokenFromManager
/** 格式化tokenjwt格式 */
/**
* 格式化tokenjwt格式
* @param {string} token - token 字符串
* @returns {string} Bearer token
*/
export const formatToken = (token) => {
return 'Bearer ' + token
}
// 导出 token-manager 的其他函数,方便迁移
export { clearAllTokens, getAuthHeader }

View File

@@ -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)
}
}