hookehuyr

refactor(router): 优化认证检查逻辑,减少冗余代码

将用户信息获取逻辑移至需要认证的路由检查之后,避免不必要的接口请求
......@@ -56,21 +56,6 @@ export const checkWxAuth = async () => {
// 登录权限检查
export const checkAuth = async (to) => {
try {
// 先请求用户信息接口
const { code, data } = await getUserInfoAPI()
if (code) {
// 如果成功获取用户信息,更新currentUser并允许访问
localStorage.setItem('currentUser', JSON.stringify(data))
return true
}
} catch (error) {
console.error('获取用户信息失败:', error)
}
// 如果接口请求失败或返回401,继续原有的本地存储判断逻辑
const currentUser = JSON.parse(localStorage.getItem('currentUser'))
// 检查当前路由是否需要认证
const needAuth = authRequiredRoutes.some((route) => {
// 如果是正则匹配模式
......@@ -85,8 +70,21 @@ export const checkAuth = async (to) => {
return to.path.startsWith(route.path)
})
if (needAuth && !currentUser) {
// 未登录时重定向到登录页面
// 如果路由需要认证,则尝试获取用户信息
if (needAuth) {
try {
// 请求用户信息接口
const { code, data } = await getUserInfoAPI()
if (code) {
// 如果成功获取用户信息,更新currentUser并允许访问
localStorage.setItem('currentUser', JSON.stringify(data))
return true
}
} catch (error) {
console.error('获取用户信息失败:', error)
}
// 如果接口请求失败或返回401,直接重定向到登录页面
return { path: '/login', query: { redirect: to.fullPath } }
}
......