Initial comitof pe project
This commit is contained in:
63
src/router/index.js
Normal file
63
src/router/index.js
Normal file
@@ -0,0 +1,63 @@
|
||||
import { createRouter, createWebHistory } from 'vue-router';
|
||||
import AuthPage from '../components/authentication/AuthPage.vue';
|
||||
import MainPage from '../views/mainpage/index.vue';
|
||||
|
||||
// 路由守卫:检查是否登录 - 优化版
|
||||
const requireAuth = (to, from, next) => {
|
||||
// 更可靠的登录状态检查
|
||||
const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
|
||||
const hasUserInfo = !!localStorage.getItem('userInfo');
|
||||
|
||||
if (isLoggedIn && hasUserInfo) {
|
||||
next();
|
||||
} else {
|
||||
// 清除无效的登录状态
|
||||
localStorage.removeItem('isLoggedIn');
|
||||
next('/');
|
||||
}
|
||||
};
|
||||
|
||||
const routes = [
|
||||
{
|
||||
path: '/',
|
||||
name: 'Auth',
|
||||
component: AuthPage,
|
||||
beforeEnter: (to, from, next) => {
|
||||
const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
|
||||
const hasUserInfo = !!localStorage.getItem('userInfo');
|
||||
|
||||
if (isLoggedIn && hasUserInfo) {
|
||||
next('/main');
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/main',
|
||||
name: 'Main',
|
||||
component: MainPage,
|
||||
beforeEnter: requireAuth
|
||||
},
|
||||
{
|
||||
path: '/:pathMatch(.*)*',
|
||||
redirect: '/'
|
||||
}
|
||||
];
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(),
|
||||
routes
|
||||
});
|
||||
|
||||
// 全局路由守卫,处理可能的登录状态异常
|
||||
router.beforeEach((to, from, next) => {
|
||||
// 对所有需要授权的路由进行检查
|
||||
if (to.matched.some(record => record.beforeEnter === requireAuth)) {
|
||||
requireAuth(to, from, next);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user