【问题标题】:Express sessions behaving differently: How can I prevent my session from being destroyed after a page refresh?表达不同的会话:如何防止我的会话在页面刷新后被破坏?
【发布时间】:2015-04-17 19:52:05
【问题描述】:

我正在使用 express/node.js 创建一个简单的身份验证系统,当然我正在使用会话进行登录。在 app.js 中,这是我的会话配置代码:

app.use(session({
  secret: 'Viu65Cc5VTU6cu',
  resave: true,
  saveUninitialized: true,
  cookie: { secure: true }
}));

据我所知,一旦我设置了像req.session.session_name 这样的会话,它应该一切正常。相反,在成功验证后,我将用户的 id 分配给一个名为 user id 的会话。

req.session.user_id  = doc.id;

然后我希望这个值一直保持到我调用销毁函数或关闭浏览器。但是,第二次我响应 POST 请求(在应用程序的不同部分)我 console.log 会话以查看它是否正在工作并且存在,但是我得到“未定义”。无论我在哪里调用 console.log,我都会得到未定义的。页面刷新后会话似乎也结束了,这与会话的要点略有矛盾,不是吗? 可能是配置不对?或者这就是 express 会话的表现方式?

如果您能提供任何建议,请提前感谢。

P.S 当我最初设置会话时,我立即尝试 console.log 值,我确实得到了一个有效值。之后它似乎变得未定义。

【问题讨论】:

  • 你在使用 HTTPS 吗?
  • 不,它只是一个安全性很低的标准 ubuntu 服务器

标签: javascript node.js session cookies express


【解决方案1】:

cookie 设置 secure : true 仅在您通过 https 访问您的网站时才有效,例如 documented here

否则,不会设置会话cookie,这基本上意味着会话不会在页面请求之间持续存在。

【讨论】:

  • 所以我需要将其设置为 false?
  • @CasparWylie 正确,尽管false 也可能是默认值(不确定)。
猜你喜欢
  • 1970-01-01
  • 2015-08-23
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 2017-08-30
  • 2020-06-14
  • 2012-10-16
相关资源
最近更新 更多