【问题标题】:express-session - req.session not showing saved sessionexpress-session - req.session 不显示保存的会话
【发布时间】:2019-07-17 08:17:02
【问题描述】:

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

当我从登录功能 console.log 会话时,我得到了正确的数据...

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 前端和带有 express-session 和 redis-connect 的 Node/Express 在我的本地主机上工作。当我查看我的 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】:

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

    显然这个问题在使用 CORS 中间件和 fetch api 时很常见。在所有 fetch 调用中,您需要发送一个设置为“包含”的凭据属性,并且在您的 cors 中间件中,您需要将一个选项设置为凭据:true。做一个都不够好,必须两个都做……

    fetch('url', {
          credentials: 'include'
        })
    
    
    
    const corsOptions = {
      credentials: true
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      相关资源
      最近更新 更多