渲染前如何在nextServerInit中访问req.session

时间:2019-01-16 01:20:14

标签: express vue.js nuxt.js

我正在使用cmd'vue init nuxt-community / express-template'在nuxt + express上建立一个网站。我正在使用的功能是“ auth”。我正在尝试获取会话,同时刷新页面,以便正确保存商店(仅供用户参考)。

配置会话后(我使用的中间件是'express-session'),我在'登录成功'后设置了会话并正确地对其进行了控制,但是当我在nuxtServerInit方法中对req.session进行控制时,它给了我一个“未定义”。

// express-api
router.post('/login', async (req, res, next) => {
  const { username, password } = req.body;
  try {
    const userQuery = await User.findOne({
      username,
      password: md5(password)
    }).exec();
    if (userQuery) {
      req.session.user = userQuery
      console.log(req.session)
      return ResUtils.success(res, userQuery);

// store actions
nuxtServerInit({ commit }, { req, res }) {
  console.log(req.session)
  commit('initUserInfo', req.session.user)  

我希望获得req.session.user,以便在刷新页面后可以使用它初始化存储。不幸的是,req.session是不确定的。

1 个答案:

答案 0 :(得分:0)

您基本上需要在创建Express实例的任何位置将其添加到server / index.js或server / app.js中

// Create express router
const router = express.Router()

// Transform req & res to have the same API as express
// So we can use res.status() & res.json()
router.use((req, res, next) => {
  Object.setPrototypeOf(req, app.request)
  Object.setPrototypeOf(res, app.response)
  req.res = res
  res.req = req
  next()
})