初始化工程

This commit is contained in:
筱野
2025-08-10 21:09:19 +08:00
commit 42c71f5d13
30 changed files with 12882 additions and 0 deletions

102
src/utils/tokenManager.ts Normal file
View File

@@ -0,0 +1,102 @@
import Taro from '@tarojs/taro'
const TOKEN_KEY = 'access_token'
const REFRESH_TOKEN_KEY = 'refresh_token'
const TOKEN_EXPIRES_KEY = 'token_expires'
export interface TokenInfo {
accessToken: string
refreshToken?: string
expiresAt?: number
}
class TokenManager {
// 获取访问令牌
getAccessToken(): string | null {
try {
return Taro.getStorageSync(TOKEN_KEY)
} catch (error) {
console.error('获取访问令牌失败:', error)
return null
}
}
// 获取刷新令牌
getRefreshToken(): string | null {
try {
return Taro.getStorageSync(REFRESH_TOKEN_KEY)
} catch (error) {
console.error('获取刷新令牌失败:', error)
return null
}
}
// 获取令牌过期时间
getTokenExpires(): number | null {
try {
return Taro.getStorageSync(TOKEN_EXPIRES_KEY)
} catch (error) {
console.error('获取令牌过期时间失败:', error)
return null
}
}
// 设置令牌信息
setToken(tokenInfo: TokenInfo): void {
try {
Taro.setStorageSync(TOKEN_KEY, tokenInfo.accessToken)
if (tokenInfo.refreshToken) {
Taro.setStorageSync(REFRESH_TOKEN_KEY, tokenInfo.refreshToken)
}
if (tokenInfo.expiresAt) {
Taro.setStorageSync(TOKEN_EXPIRES_KEY, tokenInfo.expiresAt)
}
} catch (error) {
console.error('设置令牌失败:', error)
}
}
// 清除所有令牌
clearTokens(): void {
try {
Taro.removeStorageSync(TOKEN_KEY)
Taro.removeStorageSync(REFRESH_TOKEN_KEY)
Taro.removeStorageSync(TOKEN_EXPIRES_KEY)
} catch (error) {
console.error('清除令牌失败:', error)
}
}
// 检查令牌是否过期
isTokenExpired(): boolean {
const expiresAt = this.getTokenExpires()
if (!expiresAt) {
return false // 如果没有过期时间,假设未过期
}
return Date.now() >= expiresAt
}
// 检查是否有有效令牌
hasValidToken(): boolean {
const token = this.getAccessToken()
return !!token && !this.isTokenExpired()
}
// 获取Authorization头
getAuthHeader(): Record<string, string> {
const token = this.getAccessToken()
if (!token) {
return {}
}
return {
'Authorization': `Bearer ${token}`
}
}
}
// 导出单例实例
export default new TokenManager()