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