在用户登录后存储了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 } }
我正在本地主机上使用React前端在端口3000和具有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
}
})
)
我为这些选项尝试了所有不同的值,但没有任何效果。请帮忙!
答案 0 :(得分:0)
答案来自RobertB4 https://github.com/expressjs/session/issues/374
的各种答案显然,在使用CORS中间件和访存api时,此问题很常见。在所有提取调用中,您都需要发送一个凭证属性设置为“ include”,在cors中间件中,您需要为凭证设置一个选项:true。做一个或另一个是不够的,您必须同时做...
fetch('url', {
credentials: 'include'
})
const corsOptions = {
credentials: true
}