路由导航守卫完善功能

写了两种路由导航守卫,功能都不全。
1.第一种是没有token可以访问登陆(login)页面和注册(registered)页面,不可以访问其他界面,但是再登陆之后再,可以从其他界面直接访问登陆界面,我想要的是必须点退出登陆按钮,清楚token才可以访问登陆界面

img

2.第二种没有token的时候只能访问登陆界面,不能访问注册界面(我想要可以访问注册页面),不可以访问其他界面,登陆之后必须点退出登陆才能访问登陆界面

img


试过这样写但是还是不行

img

有没有人能帮忙看一下

如果当前是登陆状态且手动输入登陆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;
});