vue3中如何使用路由守卫
什么是路由守卫?为什么要使用路由守卫?
在项目中,每一次路由的切换或者页面的刷新都需要我们判断用户是否已经登录
导航钩子提供的三个参数:
to:即将要进入的目标路由对象;
from:当前导航即将要离开的路由对象;
next :只有在调用该方法后,路由才会改变,才能进入下一个钩子函数(afterEach)。
- 路由独享守卫
vue-router提供了导航钩子:全局前置导航钩子 beforeEach和全局后置导航钩子 afterEach,他们会在路由即将改变前和改变后进行触发。所以判断用户是否登录需要在beforeEach导航钩子中进行判断。
import { createRouter, createWebHashHistory } from "vue-router";
const routes = [
{
path: "/",
name: "Home",
component: () => import("../views/home/Home.vue"), //动态加载组件
},
{
path: "/login",
name: "Login",
component: () => import("../views/login/Login.vue"), //动态加载组件
beforeEnter: (to, from, next) => {
const { isLogin } = localStorage;
isLogin ? next({ name: "Home" }) : next();
},
}
];
const router = createRouter({
history: createWebHashHistory(),
routes,
});
2.全局路由守卫
所谓全局路由守卫,就是小区大门,整个小区就这一个大门,你想要进入其中任何一个房子,都需要经过这个大门的检查
全局路由守卫有个两个:一个是全局前置守卫,一个是全局后置守卫
/* router.beforeEach()一般用来做一些进入页面的限制。比如没有登录,就不能进入某些页面,只有登录了之后才有权限查看某些页面。。。说白了就是路由拦截。 */
router.beforeEach((to, from, next) => {
const { isLogin } = localStorage;
isLogin || to.name === "Login" ? next() : next({ name: "Login" });
});
export default router;
本文作者:晴天小猪小阿紫
本文链接:https://www.cnblogs.com/chenzilong/p/16042258.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步