Files
Snap.Server.Web/src/router/permission.ts

38 lines
744 B
TypeScript
Raw Normal View History

import router from './index'
import { useUserStore } from '@/stores/user'
2025-12-21 20:13:58 +08:00
router.beforeEach(async (to, _ , next) => {
const userStore = useUserStore()
// 未登录
if (!userStore.token) {
if (to.path === '/login') {
next()
} else {
next('/login')
}
return
}
// 已登录还去 login
if (to.path === '/login') {
next('/')
return
}
// 如果没有用户信息,尝试获取
if (!userStore.userInfo) {
try {
await userStore.fetchUserInfo()
} catch (error) {
// 获取用户信息失败可能token已过期跳转到登录页
console.error('获取用户信息失败:', error)
userStore.logout()
next('/login')
return
}
}
next()
})