Vue 라우터 Auth-guard 함수가 Vuex 스토어 상태를 확인하지 않음
프로파일 페이지의 auth-guard를 설정하려고 합니다.Vue(2.0)를 vue-router와 함께 사용하고 Vuex를 스테이트로 사용하고 있습니다.내 백엔드는 파이어베이스인데 그게 중요한 건 아닌 것 같은데?auth-guard 함수가 요구 사항을 올바르게 가져올 수 없는 것 같습니다.인증 상태
이것은 내 auth-guard 기능입니다.
{
path: "/profile",
name: "Profile",
component: Profile,
meta: {
requiresAuth: true
}
}
];
const router = new VueRouter({
mode: "history",
base: process.env.BASE_URL,
routes
});
router.beforeEach((to, from, next) => {
console.log('-----------ROUTE GUARD PROPS--------');
console.log(store.state.user.isAuthorized);
console.log(store.state.user);
console.log('----------- END ROUTE GUARD PROPS--------');
if (to.matched.some(record => record.meta.requiresAuth)) {
if (store.state.user.isAuthorized) {
next()
} else {
next("/Login")
}
} else {
next()
}
})
페이지 변경 시 브라우저 콘솔에 표시되는 결과는 다음과 같습니다.
여기서의 쟁점은, 분명히, 왜,console.log
모순되다isAuthorized
의 인쇄물에서user
모듈state
참고로 저희 가게에는user
그리고.shared
모듈.그user
모듈에는state
2명의 멤버로 구성되어 있습니다.user
그리고.isAuthorized
브라우저 출력입니다.
이 둘이 왜 충돌하는지 아십니까?
이는 콘솔에서 개체를 확장할 때 개체와 개체 값이 로깅 시간이 아닌 확장 시간에 따라 평가되기 때문입니다.작은 파란색 정사각형을 마우스로 가리키면 값이 언제 평가되었는지 알 수 있습니다.!
그 안에 있어요.
그 말은, 당신이 오브젝트를 기록할 때. isAuthorized
정말이다false
속성을 직접 로그에 기록했을 때 알 수 있듯이 콘솔에서 개체를 확장하면 다음과 같이 됩니다.true
로그 기록 후 어느 시점에서 프로그램의 일부가 "is Authorized"로 변경되었기 때문입니다.true
.
또한 값이 기록될 때 콘솔이 열려 있는지 여부도 약간 다릅니다.이하의 스크린샷은, 이 투고 마지막에 있는 스니펫을 기본으로 하고 있기 때문에, 직접 사용해 보세요.
첫 번째 이미지는 로깅 시 콘솔이 닫혀 있는 경우의 이미지입니다.여기서 간단히 알 수 있습니다.Object
확장하면state
이true
.
두 번째 그림에서는 로그 기록 시 콘솔이 열려 있습니다.여기서state: false
확장하면state: true
오브젝트의 현재 상태를 가져오고 있기 때문입니다.
const object = {
state: false
}
console.log('State:', object.state)
console.log('Object:', object)
object.state = true
Open up your browsers console to see the output.
언급URL : https://stackoverflow.com/questions/65878659/vue-router-auth-guard-function-doesnt-check-vuex-store-state
'programing' 카테고리의 다른 글
Vue: 사용자 지정 구성 요소에서 파생된 사용자 지정 구성 요소에서 v-model 및 입력 이벤트 (0) | 2022.08.30 |
---|---|
C의 파일 끝에 추가 (0) | 2022.08.30 |
java.displaces를 클릭합니다.날짜 vs java.sql.날짜. (0) | 2022.08.30 |
vue-cli를 사용하지 않고 typescript/vue-router/vuex/를 사용하여 vue.js3 앱을 생성하는 방법 (0) | 2022.08.30 |
Vuex "context" 개체는 무엇입니까? (0) | 2022.08.30 |