【问题标题】:express session not saving for Ipad快速会话不为 Ipad 保存
【发布时间】:2019-01-24 01:44:59
【问题描述】:

我正在尝试在用户登录时为其保存会话变量。这适用于计算机,但当我使用 Safari 或 Chrome 在 iPad 上尝试时,它不会保存。

这是我设置会话的地方:

app.set('trust proxy', 1)
app.use(session({
  secret: crypto.randomBytes(20).toString('hex'),
  resave: false,
  duration: 60 * 60 * 1000,
  activeDuration: 10 * 60 * 1000,
  saveUninitialized: false,
  cookieName: 'session',
  cookie: { secure: true }
}))

我使用这个路由来设置用户:

.get('/checkLogin', (req,res) => {
  const loginCred = req.query;
  db.any('SELECT * FROM users WHERE user_name = $1 AND password = $2 LIMIT 1', [loginCred[0], loginCred[1]])
  .then(function (user) {
    req.session.user = user;
    req.session.save();
    res.end(JSON.stringify(user));
  })
  .catch(function (err) {
      throw err;
  })
})

当我在控制台记录此内容时,它已正确设置。 然后,当我在返回时调用会话时,它不存在。我试过添加存档,还是不行。我还在会话变量中添加了maxage 以使其保持活动状态 3 天,但它仍然无法正常工作。

【问题讨论】:

  • 你能检查一下你的cookie值吗?如果您使用 Safari,Safari 会拒绝发送任何包含非 ASCII 字符的 cookie
  • @DarknessZX 我该怎么做?我正在使用野生动物园
  • mattvanderpol.com/2013/08/14/… 如果你有 MAC,你可以试试这个。你可以对你的 cookie 会话进行编码,虽然它以前对我有用
  • @DarknessZX 看起来它不是特定于浏览器的。我也在 chrome 上试过这个,但仍然没有运气。
  • 我开始想,该设备有一些特别之处,它适用于 iphone 7/8。

标签: javascript node.js express express-session


【解决方案1】:

您的 cookie {secure: true} 需要 HTTPS 连接,浏览器才能将会话 cookie 与请求一起发回。但建议确保它适合您的测试环境,确保您在两台设备上都使用 HTTPS

https://www.npmjs.com/package/express-session#cookiesecure

还具有开发或生产模式并在每次重新启动后更改您的秘密更改后重新启动 express (使用函数 [crypto.randomBytes(20).toString('hex')] 而不是静态密钥) 导致客户端的会话 ID 在重启后无效;无论如何这都不重要,因为您没有设置持久会话,因此任何重新启动都会擦除所有会话。 如果您需要持久会话,请检查使用 memcached、数据库或文件而不是进程内存

https://www.npmjs.com/package/express-session#store

【讨论】:

  • 感谢您的提示。我的开发和生产服务器都启用了 HTTPS,当我在 ipad 上时,它通过 HTTPS 加载。它仍然不起作用。我什至有app.set('trust proxy', 1),因为我的项目在生产中的代理后面,它仍然无法工作。到家后,我将它设置为false,看看它是否有效。
  • 尝试关闭 httpOnly? cookie : {httpOnly: false },也可以尝试指定域?
【解决方案2】:

尝试输入resave: true。如果可行,您可能需要更改 saveUninitialized

的值

【讨论】:

  • 我相信我同时将这两个设置为true。不过我回家后会再试一次。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多