fix: 路由守卫进入需认证页面前验证后端可用性

This commit is contained in:
2026-04-03 17:41:22 +08:00
parent f55ff5fc24
commit 4d1003e467

View File

@@ -44,13 +44,29 @@ const router = createRouter({
routes
})
router.beforeEach((to, from, next) => {
router.beforeEach(async (to, from, next) => {
const token = localStorage.getItem('token')
if (to.meta.requiresAuth && !token) {
next('/login')
} else if (to.path === '/login' && token) {
next('/desktop')
} else if (to.meta.requiresAuth && token) {
// 有 token 且要进需认证页面,先验证后端是否可用
try {
await fetch('/api/files/test')
next()
} catch {
// 后端不可用,清除登录状态跳转登录页
localStorage.removeItem('token')
localStorage.removeItem('username')
localStorage.removeItem('userId')
localStorage.removeItem('nickname')
localStorage.removeItem('avatar')
localStorage.removeItem('storageUsed')
localStorage.removeItem('storageLimit')
window.location.href = '/login'
}
} else {
next()
}