मैं निम्नलिखित Vuex दुकान (main.js):प्रवेश Vuex राज्य जब Vue-रूटर मार्गों को परिभाषित करने
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
//init store
const store = new Vuex.Store({
state: {
globalError: '',
user: {
authenticated: false
}
},
mutations: {
setGlobalError (state, error) {
state.globalError = error
}
}
})
//init app
const app = new Vue({
router: Router,
store,
template: '<app></app>',
components: { App }
}).$mount('#app')
मैं भी है निम्नलिखित मार्गों Vue-रूटर के लिए परिभाषित (routes.js):
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
//define routes
const routes = [
{ path: '/home', name: 'Home', component: Home },
{ path: '/login', name: 'Login', component: Login },
{ path: '/secret', name: 'Secret', component: SecretPage, meta: { requiresLogin: true }
]
मैं इसे बनाने के लिए इतना है कि अगर Vuex दुकान के user
वस्तु authenticated
संपत्ति झूठी है, रूटर है लॉग इन पृष्ठ पर उपयोगकर्ता अनुप्रेषित कोशिश कर रहा हूँ।
मैं इस है:
Router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresLogin) && ???) {
// set Vuex state's globalError, then redirect
next("/Login")
} else {
next()
}
})
समस्या मैं कैसे beforeEach समारोह अंदर से Vuex दुकान के user
वस्तु का उपयोग करने की नहीं जानता है।
मुझे पता है कि मेरे पास BeforeRouteEnter
का उपयोग कर घटकों के अंदर राउटर गार्ड तर्क हो सकता है, लेकिन यह प्रत्येक घटक को अव्यवस्थित करेगा। मैं इसके बजाय राउटर स्तर पर इसे केंद्रीय रूप से परिभाषित करना चाहता हूं।
धन्यवाद सौरभ, यही वही है जो मैंने कर दिया। मैं आपका जवाब चुनूंगा, क्योंकि यह मेरी तुलना में अधिक व्यापक है। :) –