我在vuejs2中使用导航保护,并且我使用next()重定向到其他位置。但是我无法重定向到默认路由。
app.component.ts
import Vue from 'vue';
import VueRouter from 'vue-router'
import Message from './components/Message.vue';
import HelloWorld from './components/HelloWorlds.vue';
import Registration from './components/registration.vue';
import signup from './components/signup.vue';
import practice1 from './components/pr1.vue';
import store from './store/store.js';
Vue.use(VueRouter);
const router = new VueRouter({
mode:'history',
routes:[
{
path:'/',
component:Message,
},
{
path:'/helloworld',
component:HelloWorld,
meta:{
title:'testing'
}
},
{
path:'/reg',
component:Registration,
meta:{
title:'registration'
}
},
{
path:'/signup',
component:signup
},
{
path:'/practice1',
component:practice1
},
{
path:'*',
redirect:'/'
}
]
})
export default router;
router.beforeEach((to, from, next) => {
const val = to.matched.some(record => record.meta.title);
if(val) {
const userVal = store.getters.addLogUser;
if (userVal.name && userVal.pwd) {
next();
}
else {
next('/');
}
} else {
next('/');
}
});
在上面的代码中,我将meta字段添加到路由对象,并使用router.beforeEach()在警卫人员之前注册了一个全局变量。在警卫人员中,我正在检查用户是否已登录。如果未登录用户,则需要将用户重定向到默认路由next('/')。但是,如果用户未登录,则路由不会更改。这是什么问题?