【问题标题】:How to access req.session in nextServerInit before rendering如何在渲染前访问 nextServerInit 中的 req.session
【发布时间】:2019-06-10 01:45:29
【问题描述】:

我正在使用 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 是未定义的。

【问题讨论】:

    标签: express vue.js nuxt.js


    【解决方案1】:

    您需要将它添加到您的 server/index.js 或 server/app.js 中,基本上无论您在哪里创建 express 实例

    // 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()
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      相关资源
      最近更新 更多