我正在使用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()
}
答案 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);