programing

Vuex getter가 클라이언트 측에서는 TRUE를 반환하고 서버 측에서는 FALSE를 반환하는 이유는 무엇입니까?

firstcheck 2022. 8. 1. 21:24
반응형

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

반응형