diff --git a/frontend/src/components/LoginForm.vue b/frontend/src/components/LoginForm.vue index 9f72f77..ec5114b 100644 --- a/frontend/src/components/LoginForm.vue +++ b/frontend/src/components/LoginForm.vue @@ -99,11 +99,18 @@ const handleLogin = async () => { } try { - await authStore.login({ + const response = await authStore.login({ username: loginForm.username, password: loginForm.password }) + console.log('登录成功,响应数据:', response) + console.log('Auth store状态:', { + isLoggedIn: authStore.isLoggedIn, + hasToken: !!authStore.token, + hasUser: !!authStore.user + }) + // 如果选择记住我,保存登录信息到本地存储 if (loginForm.rememberMe) { localStorage.setItem('rememberedUser', JSON.stringify({ @@ -114,7 +121,14 @@ const handleLogin = async () => { localStorage.removeItem('rememberedUser') } - router.push('/dashboard') + // 确保状态已正确设置后再跳转 + if (authStore.isLoggedIn) { + console.log('认证状态确认成功,即将跳转到Dashboard') + router.push('/dashboard') + } else { + console.error('登录后认证状态异常') + toast.error('登录状态异常,请重试') + } } catch (error: any) { console.error('登录失败,详细错误信息:', { status: error.response?.status, diff --git a/frontend/src/stores/auth.ts b/frontend/src/stores/auth.ts index 2ef5bf0..cfd0473 100644 --- a/frontend/src/stores/auth.ts +++ b/frontend/src/stores/auth.ts @@ -16,10 +16,17 @@ export const useAuthStore = defineStore('auth', () => { // 初始化认证状态 const initAuth = async () => { + // 如果已经登录,不需要重新初始化 + if (isLoggedIn.value) { + console.log('用户已登录,跳过初始化') + return + } + const storedToken = userAuth.getToken() const storedUser = userAuth.getUserInfo() if (storedToken && storedUser) { + console.log('从本地存储恢复登录状态') token.value = storedToken user.value = storedUser try { diff --git a/frontend/src/views/Dashboard.vue b/frontend/src/views/Dashboard.vue index 5ce83f2..613d20a 100644 --- a/frontend/src/views/Dashboard.vue +++ b/frontend/src/views/Dashboard.vue @@ -201,8 +201,22 @@ const loadUserAccounts = async () => { // 组件挂载时获取数据 onMounted(async () => { try { - // 初始化认证状态 - await authStore.initAuth() + console.log('Dashboard初始化开始,当前认证状态:', { + isLoggedIn: authStore.isLoggedIn, + hasToken: !!authStore.token, + hasUser: !!authStore.user, + hasLocalToken: !!localStorage.getItem('userToken'), + hasLocalUser: !!localStorage.getItem('userInfo') + }) + + // 如果用户已经登录(比如刚从登录页面跳转过来),直接使用当前状态 + if (authStore.isLoggedIn) { + console.log('用户已登录,直接加载账号数据') + } else { + // 否则尝试从localStorage恢复状态 + console.log('用户未登录,尝试初始化认证状态') + await authStore.initAuth() + } // 确保用户已登录 if (!authStore.isLoggedIn) { @@ -211,8 +225,7 @@ onMounted(async () => { return } - // initAuth() 已经验证过token,无需再次调用getProfile() - // 直接加载用户账号 + // 加载用户账号 await loadUserAccounts() } catch (error: any) { console.error('Dashboard初始化失败:', error)