Vue-Auth:无法读取未定义的属性“ beforeEach”

时间:2020-07-08 00:52:11

标签: javascript vue.js vuejs2 vue-auth

我正在尝试将我的SPA VueJS与Laravel API结合使用。

为了处理基于角色的身份验证,我找到了插件vue-auth:

Github:https://github.com/websanova/vue-auth

文档:https://websanova.com/docs/vue-auth/home

此插件看起来很不错,因为它看起来很符合我的需求,但是我无法在我的应用中实现它。

import Vue from 'vue';
import auth from '@websanova/vue-auth';
import authBearer from '@websanova/vue-auth/drivers/auth/bearer.js';
import httpAxios from '@websanova/vue-auth/drivers/http/axios.1.x.js';
import routerVueRouter from '@websanova/vue-auth/dist/drivers/router/vue-router.2.x.js';

Vue.use(auth, {
    auth: authBearer,
    http: httpAxios,
    router: routerVueRouter,
    rolesKey: 'role'
});

当我尝试使用我的应用程序时,我的控制台中显示以下错误消息:

Uncaught TypeError: Cannot read property 'beforeEach' of undefined
at Auth.beforeEach
at _initInterceptors
at new Auth

有趣的是,当我将http驱动程序更改为vue-resource时(遵循文档),我遇到了另一个错误:

Uncaught TypeError: Cannot read property 'interceptors' of undefined
at Auth.interceptor
at _initInterceptors
at new Auth

几个小时以来,我一直处于困境之中,并且在互联网上到处搜索,没有任何解决方案。

非常感谢您阅读

1 个答案:

答案 0 :(得分:0)

以我的方式,我使用laravel auth方法(如JWT或Passport)来处理基于角色的身份验证,并且可以在路由器中使用beforeEach,例如:

router.beforeEach((to, from, next) => {
    if (to.path == '/login') {
        next();
    } else {
        store.commit('setLoading', true);
        store.dispatch('checkAuth').then(r => {
            store.commit('setUser', r.data);
            next();
        }).catch(e => next('/login?redirect=' + to.path)).finally(() => {
            store.commit('setLoading', false);
        })
    }
})