【发布时间】:2020-12-08 14:25:05
【问题描述】:
我正在尝试将未登录用户从所有页面重定向到/login。我试过beforeEach(),但当用户使用/home、/event等直接网址进入网站时它不会触发。
Per-Route Guard beforeEnter() 完美运行,因为它会在用户登陆该特定页面时触发。但是,它需要我在每条路线上添加beforeEnter()。
我正在寻找一种方法在路由器上几乎每个页面(甚至在动态页面上)上复制 beforeEnter(),非登录用户将被重定向到 /login。
当用户使用直接 url /home 输入时,此选项有效。
routes: [
{
path: '/home',
name: 'home',
beforeEnter(to, from, next){
if ( to.name !== 'login' && !this.isloggedin ){
next({
path: 'login',
replace: true
})
} else {
next()
}
}
},
...
]
这只有在用户进入站点并更改路线后才有效
vm.$router.beforeEach((to, from, next)=>{
if ( to.name !== 'login' && !this.isloggedin ){
next({
path: 'login',
replace: true
})
} else {
next();
}
})
提前致谢。
【问题讨论】:
标签: javascript vue.js vuejs2 vue-component vue-router