fix: 路由守卫进入需认证页面前验证后端可用性
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user