写了两种路由导航守卫,功能都不全。
1.第一种是没有token可以访问登陆(login)页面和注册(registered)页面,不可以访问其他界面,但是再登陆之后再,可以从其他界面直接访问登陆界面,我想要的是必须点退出登陆按钮,清楚token才可以访问登陆界面
2.第二种没有token的时候只能访问登陆界面,不能访问注册界面(我想要可以访问注册页面),不可以访问其他界面,登陆之后必须点退出登陆才能访问登陆界面
有没有人能帮忙看一下
如果当前是登陆状态且手动输入登陆url,需要跳到哪个页面?不能到登陆页?
function isSameTypeRoute(routes, route) {
return routes.some((iRoute) => {
if (iRoute.name === route.name) return true;
if (iRoute.children) {
return isSameTypeRoute(iRoute.children, route);
}
});
}
export function isAdminRoute(route) {
return isSameTypeRoute(adminRoutes, route);
}
export function isAuthRoute(route) {
return isSameTypeRoute(authRoutes, route);
}
router.beforeEach((to, from) => {
const isLogined = getIsLogined();
if (isLogined) {
// 已登录
const isAuthRouteWithTo = isAuthRoute(to);
if (isAuthRouteWithTo) return { name: HOME, replace: true };
} else {
// 未登录
const isAdminRouteWithTo = isAdminRoute(to);
if (isAdminRouteWithTo) {
return {
name: LOGIN,
query: { redirect: to?.fullPath || from.fullPath },
};
}
}
return true;
});