VUE中router.beforeEach不被执行

// 在此处进行配置全局的路由守卫(全局前置钩子)
// 目的是:判断当前用户中本地存储是否有token,使用户在登录之前,只能访问到/login页面,其他的页面是访问不到的。
router.beforeEach((to, from, next) => {
    // to 即将进入的路由
    // from 在哪个路由进入的
    // next 放行
    console.log(to); //打印的是页面要跳转到的路由,例如:它下面的path:为"/login"
    let token = localStorage.getItem("token") || ""; //在本地存储中获取token
    if (token) {
        //判断是否有token
        next();
    } else {
        //在没有token的前提下,to下面的path是否为/login,如果不是则页面跳转到登录页面
        if (to.path == "/login") {
            next();
        } else {
            next({path: "/login"}); //跳转页面到login页
        }
    }
});

在main中直接放入这段代码,不起作用,这时候需要将new Vue放在main.js最后即:

// 在此处进行配置全局的路由守卫(全局前置钩子)
// 目的是:判断当前用户中本地存储是否有token,使用户在登录之前,只能访问到/login页面,其他的页面是访问不到的。
router.beforeEach((to, from, next) => {
    // to 即将进入的路由
    // from 在哪个路由进入的
    // next 放行
    console.log(to); //打印的是页面要跳转到的路由,例如:它下面的path:为"/login"
    let token = localStorage.getItem("token") || ""; //在本地存储中获取token
    if (token) {
        //判断是否有token
        next();
    } else {
        //在没有token的前提下,to下面的path是否为/login,如果不是则页面跳转到登录页面
        if (to.path == "/login") {
            next();
        } else {
            next({path: "/login"}); //跳转页面到login页
        }
    }
});

new Vue({
    el: '#app',
    router,
    store,
    render: h => h(App),
    beforeCreate() {
        Vue.prototype.$bus = this;
    }
})

问题解决。

Vue3,`router.beforeEach`是用来设置全局前置守卫的方法。全局前置守卫在每个路由切换前都会被调用,可以用来做一些权限验证或者其他需要在路由切换前执行的逻辑。例如,可以在全局前置守卫判断用户是否已登录,若未登录则跳转到登录页面。下面是一个示例代码: ```javascript router.beforeEach((to, from, next) => { // 判断用户是否已登录 if (!isAuthenticated()) { // 未登录,跳转到登录页面 next('/login'); } else { // 已登录,放行 next(); } }); ``` 在上述代码,`isAuthenticated`是一个自定义的函数,用来判断用户是否已登录。如果用户已登录,则调用`next()`方法继续路由切换;如果用户未登录,则调用`next('/login')`方法跳转到登录页面。 需要注意的是,`beforeEach`方法的参数包括`to`、`from`和`next`。其,`to`表示即将要进入的路由对象,`from`表示当前导航正要离开的路由对象,`next`是一个函数,用来控制路由切换的行为。通过调用`next`方法,可以放行路由切换或者取消路由切换。 总结起来,使用`router.beforeEach`可以在Vue3实现全局前置守卫,用于处理路由切换前的逻辑,比如权限验证等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue3使用路由守卫(简单易懂哦)](https://blog.csdn.net/m0_52040370/article/details/124581903)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值