Vue.js 为什么我的Vuex getter在客户端返回TRUE,在服务器端返回FALSE?

Vue.js 为什么我的Vuex getter在客户端返回TRUE,在服务器端返回FALSE?,vue.js,vuejs2,vuex,nuxt.js,Vue.js,Vuejs2,Vuex,Nuxt.js,我使用NUXT中间件检查用户是否登录,并相应地保护某些路由。问题是,当登录用户刷新其中一个受保护路由上的页面时,会话将丢失 我有一个处于Vuex存储状态的getter(使用NUXT): 我正在访问中间件中的此getter以将未经验证的用户重定向到登录页面: let isLoggedIn = context.store.getters.isLoggedIn if (!isLoggedIn && protectedRoutes.includes(context.route.name)

我使用NUXT中间件检查用户是否登录,并相应地保护某些路由。问题是,当登录用户刷新其中一个受保护路由上的页面时,会话将丢失

我有一个处于Vuex存储状态的getter(使用NUXT):

我正在访问中间件中的此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`)
  }
但它不起作用。当我在console.log()中输入这个getter的值时,在客户端得到TRUE,在服务器端得到FALSE。如何使它们与Vue/Vuex保持同步


此外,每当我在服务器端调用console.log()上下文对象时,它似乎处于初始状态。我的方法肯定有根本性的问题。

当用户刷新页面时,所有vuex状态都将丢失,并从新开始。您需要在如下位置初始化用户


如何将
state
参数传递给
isLoggedIn
?它只是Vuex存储上的一个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`)
  }
actions: {
  nuxtServerInit ({ commit }, { req }) {
    if (req.session.user) {
      commit('user', req.session.user)
    }
  }
}