gpt4 book ai didi

node.js - Node/Express with connect-redis,如何处理 session 过期

转载 作者:IT王子 更新时间:2023-10-29 06:11:13 29 4
gpt4 key购买 nike

我有一个使用 redis 作为 session 存储的 Node/Express 应用程序。

我对 session 到期的处理有疑问。

我希望在浏览器关闭之前有一个事件 session ,所以我没有设置 session 过期时间。

这样做 session cookie 工作正常,但我对 Redis 有疑问。

似乎存储在 Redis 数据库中的一对 Key/Value 永远不会过期。

如何正确处理这个问题?

有没有一种方法可以配置redis来销毁某个空闲时间存储的值?

还是在应用程序内部调用 connect-redis 时设置 TTL 更好?


应用程序内部 session 的实际配置:

var session = require('express-session');
var RedisStore = require('connect-redis')(session);

app.use(session({
store: new RedisStore({port:6379, host: 'localhost'}),
secret: "my-secret-here",
resave: false,
saveUninitialized: true }));

最佳答案

将 Redis 与 express-session 结合使用,您可以使用 express-session 中的 touch() 方法来重置 TTL。因此,如果您在创建 session 时设置了 TTL,请在您不希望 session 过期的路由上执行类似这样的操作:

api.get("/someRoute/", (req, res) => {
req.session.touch();

// Whatever else you need to do
res.sendStatus(200);
}

假设客户端仍在访问您的 API,这将重置 Redis 上的 TTL 并防止 session 过期 - 我假设如果客户端与您的 API 交互的时间足够长,则意味着浏览器已关闭或以其他方式结束使用您的应用。

关于node.js - Node/Express with connect-redis,如何处理 session 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38721131/

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