Express-Session cookie 不会更新

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

您好,我正在使用express.js,目前我一直在使用express-sessions。我的快速会话是这样坐起来的(index.js):

app.use(
  session({
  secret: 'idegas',
  resave: false,
  saveUninitialized: false,
  cookie: {
    maxAge: null,
    user_identification: null,
    authorized: false,
  }
}))  

当用户位于登录页面并且用户成功登录时,我想给他们一个会话。现在我使用这个(login.js)来做到这一点:

req.session.cookie.expires = new Date(Date.now() + '7200000')
req.session.cookie.user_identification = id
req.session.cookie.authorized = true

此用户被重定向到仪表板之后,当我想检查用户会话时,它会像这样写回(控制台):

Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    user_identification: null,
    authorized: false
  }
}

如您所见,没有任何变化。我很困惑为什么这行不通。有任何想法吗?谢谢!

javascript express express-session
2个回答
0
投票

req.session.cookie

每个会话都有一个唯一的 cookie 对象。这允许您更改每个访问者的会话 cookie。例如,我们可以将 req.session.cookie.expires 设置为 false,以使 cookie 仅在用户代理的持续时间内保留。

此属性用于更改会话 cookie 的行为。

它不能用于添加/更改任何其他cookie

您想使用res.cookie


0
投票

req.session.cookie
属性用于设置会话(存储在服务器上)的到期日期,而不是存储在用户浏览器中的sessionId cookie。

您可以设置

req.session.cookie.expires = false
使会话立即过期(那么它将是一个会话cookie,当服务器重新启动时它将被删除)。如果您想设置特定的到期日期,请使用
req.session.cookie.maxAge
属性(因为不建议直接将日期设置为
expires
属性)。

如果您希望在 sessionId cookie(存储在用户浏览器中)上设置此到期日期,那么您还必须在会话中间件中设置

rolling: true
选项。

注:

  • req.session.cookie
    并不意味着用作 cookie 来存储数据,因此将数据存储在会话本身上,例如:
    req.session.user_identification = id
  • 如果
    expires
    maxAge
    都在选项(或属性)中设置,则使用对象中定义的最后一个。
© www.soinside.com 2019 - 2024. All rights reserved.