revert 21f4ff65d9
revert fix: 修复登录后立即验证token失败的问题 - 修改Dashboard组件,对于已登录用户跳过重复的token验证 - 在LoginForm中添加详细的认证状态日志 - 优化initAuth方法,避免对已登录用户的重复验证 - 添加认证状态检查,确保登录成功后再跳转 - 解决登录成功后立即调用/auth/me导致401的时序问题 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -99,18 +99,11 @@ const handleLogin = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await authStore.login({
|
await authStore.login({
|
||||||
username: loginForm.username,
|
username: loginForm.username,
|
||||||
password: loginForm.password
|
password: loginForm.password
|
||||||
})
|
})
|
||||||
|
|
||||||
console.log('登录成功,响应数据:', response)
|
|
||||||
console.log('Auth store状态:', {
|
|
||||||
isLoggedIn: authStore.isLoggedIn,
|
|
||||||
hasToken: !!authStore.token,
|
|
||||||
hasUser: !!authStore.user
|
|
||||||
})
|
|
||||||
|
|
||||||
// 如果选择记住我,保存登录信息到本地存储
|
// 如果选择记住我,保存登录信息到本地存储
|
||||||
if (loginForm.rememberMe) {
|
if (loginForm.rememberMe) {
|
||||||
localStorage.setItem('rememberedUser', JSON.stringify({
|
localStorage.setItem('rememberedUser', JSON.stringify({
|
||||||
@@ -121,14 +114,7 @@ const handleLogin = async () => {
|
|||||||
localStorage.removeItem('rememberedUser')
|
localStorage.removeItem('rememberedUser')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 确保状态已正确设置后再跳转
|
router.push('/dashboard')
|
||||||
if (authStore.isLoggedIn) {
|
|
||||||
console.log('认证状态确认成功,即将跳转到Dashboard')
|
|
||||||
router.push('/dashboard')
|
|
||||||
} else {
|
|
||||||
console.error('登录后认证状态异常')
|
|
||||||
toast.error('登录状态异常,请重试')
|
|
||||||
}
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error('登录失败,详细错误信息:', {
|
console.error('登录失败,详细错误信息:', {
|
||||||
status: error.response?.status,
|
status: error.response?.status,
|
||||||
|
|||||||
@@ -16,17 +16,10 @@ export const useAuthStore = defineStore('auth', () => {
|
|||||||
|
|
||||||
// 初始化认证状态
|
// 初始化认证状态
|
||||||
const initAuth = async () => {
|
const initAuth = async () => {
|
||||||
// 如果已经登录,不需要重新初始化
|
|
||||||
if (isLoggedIn.value) {
|
|
||||||
console.log('用户已登录,跳过初始化')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const storedToken = userAuth.getToken()
|
const storedToken = userAuth.getToken()
|
||||||
const storedUser = userAuth.getUserInfo()
|
const storedUser = userAuth.getUserInfo()
|
||||||
|
|
||||||
if (storedToken && storedUser) {
|
if (storedToken && storedUser) {
|
||||||
console.log('从本地存储恢复登录状态')
|
|
||||||
token.value = storedToken
|
token.value = storedToken
|
||||||
user.value = storedUser
|
user.value = storedUser
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -201,22 +201,8 @@ const loadUserAccounts = async () => {
|
|||||||
// 组件挂载时获取数据
|
// 组件挂载时获取数据
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
try {
|
try {
|
||||||
console.log('Dashboard初始化开始,当前认证状态:', {
|
// 初始化认证状态
|
||||||
isLoggedIn: authStore.isLoggedIn,
|
await authStore.initAuth()
|
||||||
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) {
|
if (!authStore.isLoggedIn) {
|
||||||
@@ -225,7 +211,8 @@ onMounted(async () => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载用户账号
|
// initAuth() 已经验证过token,无需再次调用getProfile()
|
||||||
|
// 直接加载用户账号
|
||||||
await loadUserAccounts()
|
await loadUserAccounts()
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error('Dashboard初始化失败:', error)
|
console.error('Dashboard初始化失败:', error)
|
||||||
|
|||||||
Reference in New Issue
Block a user