在vuejs2中使用导航保护时导航到默认路由的问题

时间:2018-10-03 16:12:02

标签: vuejs2

我在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('/')。但是,如果用户未登录,则路由不会更改。这是什么问题?

0 个答案:

没有答案