feat: 功能
This commit is contained in:
@@ -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
|
||||
|
||||
/** 格式化token(jwt格式) */
|
||||
/**
|
||||
* 格式化token(jwt格式)
|
||||
* @param {string} token - token 字符串
|
||||
* @returns {string} Bearer token
|
||||
*/
|
||||
export const formatToken = (token) => {
|
||||
return 'Bearer ' + token
|
||||
}
|
||||
|
||||
// 导出 token-manager 的其他函数,方便迁移
|
||||
export { clearAllTokens, getAuthHeader }
|
||||
|
||||
@@ -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