gpt4 book ai didi

javascript - 快速 session 不为 Ipad 保存

转载 作者:搜寻专家 更新时间:2023-10-31 23:19:35 24 4
gpt4 key购买 nike

我试图在用户登录时为他们保存一个 session 变量。这在计算机上有效,但当我在使用 SafariChromeiPad 上尝试时,它不会保存。

这是我设置 session 的地方:

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;
})
})

当我控制台记录这个时,它设置正确。然后当我在返回时调用 session 时它不存在。我试图添加保存,但仍然没有用。我还在 session 变量中添加了 maxage 以使其保持事件状态 3 天,但它仍然无法正常工作。

最佳答案

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

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

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

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


更新2022-10-19

使用 NGINX 作为前端的示例 session ,当我偶然发现这个时,我最终将其用于我的项目,我的 node.js/express 在 nginx>node.js 和使用上游之间没有 SSL 设置。

必须信任代理,我最终删除了:

// app.set('trust proxy', 1) // trust first proxy

并将其添加到 session 中

let session         = require('express-session');
let memsession = require('connect-memcached')(session);

let sessionMiddleware = session({
secret : config.sessionSecret,
key : 'sid',
cookie: {
maxAge : (86400 * 30 * 1000), // 30 days
},

proxy : true,
resave : true,
rolling : true,
saveUninitialized: true,

store : new memsession({
hosts: ['127.0.0.1:11211'],
// secret: '_secret_' // Optionally use transparent encryption for memcache session data
})
});

但是我不确定我们是否让所有旧的 iPad 都能正常工作,我们确实让我的 iPad 正常工作并转移了项目

关于javascript - 快速 session 不为 Ipad 保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51888214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com