0
我正在使用最新版本的vue-router,vuex和feathers-vuex,并且我的路由器出现问题。如何设置vuex和vue-router在商店值未设置时重定向?
我在做的是检查一个路线是否在meta.json文件中有属性"requiresAuth": true
。如果确实如此,那么检查由feathers-vuex提供的store.state.auth.user
的值,如果这个值没有被设置,则重定向到登录。
这工作得很好,当我登录,除非,如果我重装我保护的页面调用/private
然后被重定向到登录这样看来的store.state.auth.user
值不是里面router.beforeEach
准备。
那么,如何设置我的路由器才能在正确的时刻获得店铺的价值?
我的文件如下:
index.js
import Vue from 'vue'
import Router from 'vue-router'
import store from '../store'
const meta = require('./meta.json')
// Route helper function for lazy loading
function route (path, view) {
return {
path: path,
meta: meta[path],
component:() => import(`../components/${view}`)
}
}
Vue.use(Router)
export function createRouter() {
const router = new Router({
mode: 'history',
scrollBehavior:() => ({ y: 0 }),
routes: [
route('/login', 'Login')
route('/private', 'Private'),
{ path: '*', redirect: '/' }
]
})
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth) {
if (!store.state.auth.user) {
next('/login')
} else {
next()
}
} else {
next()
}
})
return router
}
meta.json
{
"/private": {
"requiresAuth": true
}
}
你应该提供Ë发起行动,这将准备商店的第一个加载 – SaJed
你知道https://router.vuejs.org/en/advanced/meta.html?所以你可以在关于商店的路由本身 上定义requiresAuth,我在Login.vue中处理整个登录逻辑,它也在商店中设置用户,但是我没有/登录路由,我'm加载Login.vue有条件地而不是所请求的组件,如果user.id缺失,这种方式登录会自动显示,无论网址,如果用户没有登录,并且不需要重定向成功登录..可能这有助于 – Can