feat: 功能优化
This commit is contained in:
@@ -12,34 +12,25 @@
|
||||
import { ref } from 'vue'
|
||||
import axios from 'axios'
|
||||
import { API_BASE } from '@gold/config/api'
|
||||
import tokenManager from '@gold/utils/token-manager'
|
||||
|
||||
// 本地存储配置
|
||||
const CACHE_KEY = 'USER_INFO_CACHE'
|
||||
const CACHE_DURATION = 5 * 60 * 1000 // 5分钟缓存
|
||||
|
||||
// 获取 token 的工具函数(需要从应用层传入或使用全局配置)
|
||||
let getTokenFn = null
|
||||
|
||||
/**
|
||||
* 设置获取 token 的函数
|
||||
* @param {Function} fn - 获取 token 的函数
|
||||
*/
|
||||
export function setTokensGetter(fn) {
|
||||
getTokenFn = fn
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 Authorization Header
|
||||
* @returns {string}
|
||||
*/
|
||||
function getAuthHeader() {
|
||||
if (getTokenFn) {
|
||||
const token = getTokenFn()
|
||||
return token ? `Bearer ${token}` : ''
|
||||
// 首先尝试从 tokenManager 获取
|
||||
const token = tokenManager.getAccessToken()
|
||||
if (token) {
|
||||
return `Bearer ${token}`
|
||||
}
|
||||
// 如果没有设置 token getter,尝试从常见位置获取
|
||||
|
||||
// 如果 tokenManager 没有 token,尝试从 sessionStorage 获取(开发环境使用)
|
||||
try {
|
||||
// 尝试从 sessionStorage 获取
|
||||
const manualToken = sessionStorage.getItem('DEV_MANUAL_TOKEN')
|
||||
if (manualToken) {
|
||||
return `Bearer ${manualToken}`
|
||||
@@ -108,7 +99,6 @@ export function clearUserInfoCache() {
|
||||
* 用户信息 Hook
|
||||
* @param {Object} options - 配置选项
|
||||
* @param {string} options.baseUrl - API 基础 URL(可选,默认使用 APP_MEMBER)
|
||||
* @param {Function} options.getToken - 获取 token 的函数(可选)
|
||||
* @returns {Object} { fetchUserInfo, loading, error, userInfo }
|
||||
*/
|
||||
export function useUserInfo(options = {}) {
|
||||
@@ -116,11 +106,6 @@ export function useUserInfo(options = {}) {
|
||||
const error = ref(null)
|
||||
const userInfo = ref(null)
|
||||
|
||||
// 如果传入了 getToken 函数,设置它
|
||||
if (options.getToken) {
|
||||
setTokensGetter(options.getToken)
|
||||
}
|
||||
|
||||
// 确定 API 基础路径
|
||||
const baseUrl = options.baseUrl || API_BASE.APP_MEMBER
|
||||
const apiUrl = `${baseUrl}/user/get`
|
||||
@@ -210,10 +195,6 @@ export function useUserInfo(options = {}) {
|
||||
* @returns {Promise<Object>} 用户信息对象
|
||||
*/
|
||||
export async function getUserInfo(options = {}) {
|
||||
// 如果传入了 getToken 函数,设置到全局
|
||||
if (options.getToken) {
|
||||
setTokensGetter(options.getToken)
|
||||
}
|
||||
const { fetchUserInfo } = useUserInfo(options)
|
||||
return await fetchUserInfo()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user