我现在的逻辑是,如果是非登录页、非注册页,我就判断是否登录了,如果未登录我就重定向到登录页,已登录了就放行,全局路由守卫该如何写逻辑
时间: 2023-08-16 16:00:17 浏览: 37
如果你的逻辑是在非登录页和非注册页中判断用户是否已登录,如果未登录则重定向到登录页,已登录则放行,可以在全局路由守卫中进行如下的逻辑编写:
```javascript
router.beforeEach((to, from, next) => {
const token = localStorage.getItem('token');
const isAuthenticated = token ? true : false;
if (to.name !== 'Login' && to.name !== 'Register') {
// 如果不是登录页和注册页
if (isAuthenticated) {
// 已登录,放行
next();
} else {
// 未登录,重定向到登录页
next('/login');
}
} else {
// 如果是登录页或注册页,直接放行
next();
}
});
```
在上述代码中,我们通过获取存储在缓存中的 token 来判断用户是否已登录。如果用户已经登录,则调用 `next()` 继续导航到目标路由;如果用户未登录,则调用 `next('/login')` 重定向到登录页面。
这样的逻辑可以确保非登录页和非注册页只有在用户已登录的情况下才能访问,否则会被重定向到登录页面。
注意:在使用全局路由守卫时,确保在路由守卫之前已经添加了路由配置,且路由守卫写在路由配置之前。
希望对你有所帮助!如果还有其他问题,请随时提问。