实现登录态自动续期并优化扫码兼容性

This commit is contained in:
andy
2026-07-11 15:53:41 +08:00
parent 4870b6761e
commit ab4da9850b
14 changed files with 514 additions and 32 deletions

View File

@@ -6,7 +6,15 @@ import {
type OrganizationMemberInfo
} from '@/api/auth'
import type { TokenResponse } from '@/types/api'
import { AUTH_EXPIRED_EVENT, AUTH_STORAGE_KEYS, clearAuthStorage } from '@/utils/authStorage'
import {
AUTH_EXPIRED_EVENT,
AUTH_STORAGE_KEYS,
AUTH_TOKEN_UPDATED_EVENT,
clearAuthStorage,
persistAuthToken,
readStoredAccessToken,
readStoredRefreshToken
} from '@/utils/authStorage'
import { env } from '@/utils/env'
export interface StaffUser {
@@ -46,8 +54,9 @@ export const useAuthStore = defineStore('auth', () => {
const hasOrganization = computed(() => Boolean(memberInfo.value?.organizationId))
const persistToken = (payload: TokenResponse, phone: string) => {
token.value = payload.access_token
refreshToken.value = payload.refresh_token || ''
const storedToken = persistAuthToken(payload)
token.value = storedToken.accessToken
refreshToken.value = storedToken.refreshToken
user.value = {
id: payload.user_id,
username: payload.username || phone,
@@ -55,10 +64,6 @@ export const useAuthStore = defineStore('auth', () => {
tenantId: payload.tenant_id
}
localStorage.setItem(AUTH_STORAGE_KEYS.token, token.value)
if (refreshToken.value) {
localStorage.setItem(AUTH_STORAGE_KEYS.refreshToken, refreshToken.value)
}
localStorage.setItem(AUTH_STORAGE_KEYS.user, JSON.stringify(user.value))
}
@@ -85,6 +90,11 @@ export const useAuthStore = defineStore('auth', () => {
memberInfo.value = null
}
const syncStoredToken = () => {
token.value = readStoredAccessToken()
refreshToken.value = readStoredRefreshToken()
}
const logout = () => {
resetState()
clearAuthStorage()
@@ -92,6 +102,7 @@ export const useAuthStore = defineStore('auth', () => {
if (typeof window !== 'undefined') {
window.addEventListener(AUTH_EXPIRED_EVENT, resetState)
window.addEventListener(AUTH_TOKEN_UPDATED_EVENT, syncStoredToken)
}
return {