首页 > 解决方案 > vue 路由器重定向失败

问题描述

路线:

import vQuestion from './components/visitor/vQuestion';

import login from './components/auth/login';
import register from './components/auth/register';
import forgot from './components/auth/forgot';

import Home from './components/Home';
import Question from './components/Question/Question';
import Answer from './components/Answer/Answer';

export const routes = [
{ path: '/', name: 'vQuestion', component: vQuestion },
{ path: '/register', name: 'register', component: register },
{ path: '/login', name: 'login', component: login },
{ path: '/forgot', name: 'forgot',  component: forgot },
{ path: '/answer/:id', name: 'answer', component: Answer},

{ path: '/home', name: 'home', component: Home, meta: {requiresAuth: true}},
{ path: '/question', name:'question', component: Question, meta: {requiresAuth: true} },

];

我想设置回答是否看到任何已登录

 <ul v-for="question in questions" v-bind:key="question.main" id="my-table">
     <router-link class="" :to="{name:'answer', params: {id: question.main}}">
           <p>{{question.title}}</p>
     </router-link>
 </ul>

但是没有登录的用户可以打开这个路径,登录后当用户点击这个链接时,时间路径没有被重定向

在 main.js 文件中

const router = new VueRouter({
   mode: 'history',
   routes
});

router.beforeEach((to,from,next) => {
    const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
    const currentUser = firebase.auth().currentUser;

    if(requiresAuth && !currentUser) next('/');
    else if(!requiresAuth && currentUser) next('/home');
    else next();
});

标签: javascriptvue.js

解决方案


推荐阅读