express-session - req.session未显示已保存的会话

问题描述 投票:0回答:1

在用户登录后存储userId后,我无法查看req.session保存的数据。

当我从login函数登录会话时,我得到了正确的数据......

Session {
  cookie:
   { path: '/',
     _expires: 2019-02-23T12:17:24.134Z,
     originalMaxAge: 7200000,
     httpOnly: true,
     sameSite: true,
     secure: false },
  userId: 4 }

但是当我在其他路线上调试console.log(req.session)后,我得到一个新的空白会话

Session {
  cookie:
   { path: '/',
     _expires: 2019-02-23T12:12:47.282Z,
     originalMaxAge: 7200000,
     httpOnly: true,
     sameSite: false,
     secure: false } }

我使用端口3000上的React前端和使用快速会话和redis-connect的Node / Express在我的localhost上工作。当我查看我的Redis时,我正确地看到了存储的会话。

这是我的会话代码......

app.use(
  session({
    store,
    name: 'sid',
    saveUninitialized: false,
    resave: false,
    secret: 'secret',
    cookie: {
      maxAge: 1000 * 60 * 60 * 2,
      sameSite: true,
      secure: false
    }
  })
)

我已经为这些选项尝试了所有不同的值,但没有任何作用。请帮忙!

node.js reactjs express express-session
1个回答
0
投票

答案来自RobertB4 https://github.com/expressjs/session/issues/374的各种答案

显然,当使用CORS中间件和获取api时,这个问题很常见。在所有提取调用中,您需要将凭证属性设置为“包含”,并且在您的cors中间件中,您需要设置凭证选项:true。做一个或另一个不够好,你必须做两个......

fetch('url', {
      credentials: 'include'
    })



const corsOptions = {
  credentials: true
}
© www.soinside.com 2019 - 2024. All rights reserved.