반응형
Vuex getter가 클라이언트 측에서는 TRUE를 반환하고 서버 측에서는 FALSE를 반환하는 이유는 무엇입니까?
NUXT 미들웨어를 사용하여 사용자의 로그인 여부를 확인하고 이에 따라 특정 경로를 보호합니다.문제는 로그인한 사용자가 보호된 경로 중 하나에서 페이지를 새로 고치면 세션이 손실된다는 것입니다.
Vuex 스토어 상태(NUXT 사용):
getters: {
isLoggedIn (state) {
return !isEmpty(state.auth.email) && !isEmpty(state.auth.token)
}
}
인증되지 않은 사용자를 로그인 페이지로 리디렉션하기 위해 미들웨어에서 다음 getter에 액세스합니다.
let isLoggedIn = context.store.getters.isLoggedIn
if (!isLoggedIn && protectedRoutes.includes(context.route.name)) {
let language = context.store.language ? context.store.language : 'en'
context.redirect(`/${language}/login`)
}
근데 안 되네.이 getter의 값을 console.log()하면 클라이언트 측에서 TRUE, 서버 측에서 FALSE가 표시됩니다.둘 다 Vue/Vuex와 동기화하려면 어떻게 해야 하나요?
게다가 서버측의 컨텍스트오브젝트를 console.log()하면, 그 오브젝트는 항상 초기 상태인 것처럼 보입니다.내 접근법에 뭔가 근본적으로 문제가 있는 게 틀림없어.
사용자가 페이지를 새로 고치면 모든 vuex 상태가 손실되고 새로 시작됩니다.nuxtServerInit 등의 장소에서 사용자를 초기화해야 합니다.
actions: {
nuxtServerInit ({ commit }, { req }) {
if (req.session.user) {
commit('user', req.session.user)
}
}
}
언급URL : https://stackoverflow.com/questions/51202417/why-is-my-vuex-getter-returning-true-on-the-client-side-and-false-on-the-server
반응형
'programing' 카테고리의 다른 글
부호 없는 정수 빼기는 정의된 동작입니까? (0) | 2022.08.01 |
---|---|
Java에서 어레이를 초기화하는 방법 (0) | 2022.08.01 |
v-html의 Vue 구성 요소/요소 (0) | 2022.08.01 |
유용한 Eclipse Java 코드 템플릿 찾기 (0) | 2022.08.01 |
Java Builder 클래스 하위 분류 (0) | 2022.08.01 |