fix: 路由守卫进入需认证页面前验证后端可用性
This commit is contained in:
@@ -44,13 +44,29 @@ const router = createRouter({
|
|||||||
routes
|
routes
|
||||||
})
|
})
|
||||||
|
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach(async (to, from, next) => {
|
||||||
const token = localStorage.getItem('token')
|
const token = localStorage.getItem('token')
|
||||||
|
|
||||||
if (to.meta.requiresAuth && !token) {
|
if (to.meta.requiresAuth && !token) {
|
||||||
next('/login')
|
next('/login')
|
||||||
} else if (to.path === '/login' && token) {
|
} else if (to.path === '/login' && token) {
|
||||||
next('/desktop')
|
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 {
|
} else {
|
||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user