Vue-Router Guards возвращают 404 вместо перенаправления - PullRequest
0 голосов
/ 19 июня 2019

Итак, я создаю веб-сайт, который использует authentification с tokens.Я использую функцию beforeEach() из vue-router, чтобы проверить, действителен ли токен.Все работало нормально, пока по ошибке я не удалил package.json.Я попытался создать еще одну со всеми зависимостями, которые я помню (в любом случае их было не слишком много), но теперь, когда я пытаюсь Login или Logout, вместо перенаправления меня на домашнюю страницу или страницу регистрации, он возвращаетошибка 404 Not Found page.

И одна вещь, которую я заметил, это то, что она регистрирует меня, я вижу, что после того, как я иду один на домашней странице.Но он должен перенаправить меня .. не возвращать ошибку 404 ..

Кто-нибудь знает, в чем может быть проблема?

Вот мой код vue-router:

import Vue from "vue";
import Router from "vue-router";
import Home from "./components/Home.vue";

Vue.use(Router);

let router = new Router({
    mode: "history",
    base: process.env.BASE_URL,
    routes: [
        {
            path: "/",
            name: "home",
            component: Home
        },
        {
            path: "/login",
            name: "login",
            component: () =>
                import("./components/Login.vue"),
            meta: {
                requiresGuest: true
            }
        },
        {
            path: "/register",
            name: "register",
            component: () =>
                import("./components/Register.vue"),
            meta: {
                requiresGuest: true
            }
        },
        {
            path: "/add-match",
            name: "add-match",
            component: () =>
                import("./components/AddMatch.vue"),
            meta: {
                requiresAuth: true
            }
        },
        {
            path: "/show-matches",
            name: "show-matches",
            component: () =>
                import("./components/ShowMatches.vue"),
            meta: {
                requiresAuth: true
            }
        }
    ]
});

// Nav Guards

router.beforeEach((to, from, next) => {
    // Check for requiredAuth guard
    if(to.matched.some(record => record.meta.requiresAuth)) {
        // Check if NOT logged in
        if(!localStorage.token) {
            next({
                path: '/login',
                query: {
                    redirect: to.fullPath
                }
            })
        } else {
            next();
        }
    } else if(to.matched.some(record => record.meta.requiresGuest)) {
        // Check if logged in
        if(localStorage.token) {
            // Go to login
            next({
                path: '/',
                query: {
                    redirect: to.fullPath
                }
            })
        } else {
            next()
        }
    } else {
        // Proceed to route
        next()
    }
})

export default router;

Заранее спасибо.

...