Vue路由器导航保护功能可防止更改URL

时间:2019-11-18 14:43:15

标签: laravel vue.js vue-router

我正在使用vuejs导航卫士进行一些检查,以检查用户是否有效进入页面。如果用户不符合条件,我希望auth Guard返回当前执行的false。但是,完成此操作后,浏览器的URL将设置回我来自的上一个URL。我不希望出现这种情况,而是希望浏览器URL保持不变,但仍使用户无法使用该页面。

我想要这样做的原因是,当用户单击刷新时,我希望它停留在同一页面上。我知道这是路由器的预期vuejs行为,但我希望找到解决方法。这是身份验证防护的代码。

function guardRoute (to, from, next) {

    if (window.$cookies.get('kiosk_mode') === new DeviceUUID().get()) {
        return next(false)
    }

    return next()

}

2 个答案:

答案 0 :(得分:1)

要拒绝导航但不将url重置为以前的状态,可以使用(需要vue 2.4.0+)拒绝导航:

next(new Error('Authentication failure'));

如果没有路由器错误处理,则需要包括:

router.onError(error => {
    console.log(error);
});

有关更多详细信息,请参见文档:https://router.vuejs.org/guide/advanced/navigation-guards.html#global-before-guards

答案 1 :(得分:0)

尝试一下 history.pushState({},null,'/ test')返回next(false);