feat(auth): 优化登录流程和错误处理

- 优化登录失败时的错误抛出机制,确保上层组件可以捕获
- 增加登录成功的统一提示信息
- 完善获取用户信息失败时的错误处理
- 简化登录成功提示逻辑,移除重复判断
This commit is contained in:
Leo 2025-07-07 09:16:10 +08:00
parent fb1b2583bf
commit a6898c0041

View File

@ -1,6 +1,7 @@
import { router } from '@/router' import { router } from '@/router'
import { fetchLogin, fetchLoginUserInfo, fetchLogout } from '@/service/api/auth' import { fetchLogin, fetchLoginUserInfo, fetchLogout } from '@/service/api/auth'
import { local } from '@/utils' import { local } from '@/utils'
import { coiMsgSuccess } from '@/utils/coi'
import { useRouteStore } from './router' import { useRouteStore } from './router'
import { useTabStore } from './tab' import { useTabStore } from './tab'
@ -66,8 +67,10 @@ export const useAuthStore = defineStore('auth-store', {
async login(loginName: string, password: string, codeKey: string, securityCode: string, rememberMe = false) { async login(loginName: string, password: string, codeKey: string, securityCode: string, rememberMe = false) {
try { try {
const { isSuccess, data } = await fetchLogin({ loginName, password, codeKey, securityCode, rememberMe }) const { isSuccess, data } = await fetchLogin({ loginName, password, codeKey, securityCode, rememberMe })
if (!isSuccess) if (!isSuccess) {
return // 登录失败时抛出错误,让上层组件处理验证码刷新
throw new Error('登录失败')
}
// 保存Token // 保存Token
local.set('accessToken', data.tokenValue) local.set('accessToken', data.tokenValue)
@ -75,8 +78,10 @@ export const useAuthStore = defineStore('auth-store', {
// 获取用户信息 // 获取用户信息
const userInfoResult = await fetchLoginUserInfo() const userInfoResult = await fetchLoginUserInfo()
if (!userInfoResult.isSuccess) if (!userInfoResult.isSuccess) {
return // 获取用户信息失败时也抛出错误
throw new Error('获取用户信息失败')
}
// 处理登录信息 - 转换后端返回的数据结构 // 处理登录信息 - 转换后端返回的数据结构
const userInfo = { const userInfo = {
@ -93,6 +98,8 @@ export const useAuthStore = defineStore('auth-store', {
} }
catch (e) { catch (e) {
console.warn('[Login Error]:', e) console.warn('[Login Error]:', e)
// 重新抛出错误,确保上层组件能够捕获
throw e
} }
}, },
@ -112,6 +119,10 @@ export const useAuthStore = defineStore('auth-store', {
// 进行重定向跳转 // 进行重定向跳转
const route = unref(router.currentRoute) const route = unref(router.currentRoute)
const query = route.query as { redirect: string } const query = route.query as { redirect: string }
// 登录成功提示
coiMsgSuccess('登录成功!')
router.push({ router.push({
path: query.redirect || '/', path: query.redirect || '/',
}) })