나는 사용자가 인증 된 경우 확인하여 내 경로를 보호하기 위해 노력하고,이 예제 경로입니다 :Vuex VUE 라우터에서 네임 스페이스 모듈 게터 접근
{
path: '/intranet',
component: search,
meta: { requiresAuth: true },
props: {
tax: 'type',
term: 'intranet-post',
name: 'Intranet'
}
},
그리고는 다음과 같이 가드를 설정하고있다 :
나는 그것이 같은 인증 게터에 액세스 할 때import Vue from "vue";
export default {
namespaced: true,
state: {
authenticated: !!localStorage.getItem("token"),
token: localStorage.getItem("token")
},
mutations: {
login: function(state, token){
state.authenticated = true;
state.token = token;
},
logout: function(state){
state.authenticated = false;
state.token = '';
}
},
actions: {
login: function({commit}, token){
localStorage.setItem('token', token);
commit('login', token);
},
logout: function({commit}){
localStorage.removeItem("token");
commit('logout');
}
},
getters: {
getToken: (state) => state.token,
getAuthenticated: (state) => state.authenticated,
}
}
하지만, :
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
let authenticated = this.$store.getters['auth/getAuthenticated'];
if (!authenticated) {
next({
path: '/login',
query: { redirect: to.fullPath }
})
} else {
next()
}
} else {
next()
}
})
이 은 vuex의 인증을위한 모듈입니다 경로 가드에 표시된 경우 오류가 발생합니다.
Cannot read property 'getters' of undefined
무엇이 잘못 되었나요?
'router.beforeEach'를 사용하는 파일에서 전체 코드를 게시 할 수 있습니까? – Thaadikkaaran