初始化工程
This commit is contained in:
102
src/utils/tokenManager.ts
Normal file
102
src/utils/tokenManager.ts
Normal 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()
|
||||
Reference in New Issue
Block a user