feat(frontend): 添加基础设施模块
工具函数: - utils/auth.ts,Token 存储、解析、过期校验 API 模块: - api/request.ts,Axios 实例封装,请求/响应拦截器 状态管理: - stores/auth.ts,认证状态管理(Pinia) 组合式函数: - composables/useAuth.ts,认证逻辑封装 路由配置: - router/index.ts,路由表定义、路由守卫(未登录重定向)
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
const TOKEN_KEY = 'xinfra_token'
|
||||
const USER_KEY = 'xinfra_user'
|
||||
|
||||
export function getToken(): string | null {
|
||||
return localStorage.getItem(TOKEN_KEY)
|
||||
}
|
||||
|
||||
export function setToken(token: string): void {
|
||||
localStorage.setItem(TOKEN_KEY, token)
|
||||
}
|
||||
|
||||
export function removeToken(): void {
|
||||
localStorage.removeItem(TOKEN_KEY)
|
||||
}
|
||||
|
||||
export function getUser(): any {
|
||||
const userStr = localStorage.getItem(USER_KEY)
|
||||
return userStr ? JSON.parse(userStr) : null
|
||||
}
|
||||
|
||||
export function setUser(user: any): void {
|
||||
localStorage.setItem(USER_KEY, JSON.stringify(user))
|
||||
}
|
||||
|
||||
export function removeUser(): void {
|
||||
localStorage.removeItem(USER_KEY)
|
||||
}
|
||||
|
||||
export function isTokenExpired(token: string): boolean {
|
||||
try {
|
||||
const payload = JSON.parse(atob(token.split('.')[1]))
|
||||
return payload.exp * 1000 < Date.now()
|
||||
} catch {
|
||||
return true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user