【问题标题】:Node.JS with RedisStore session timeout带有 RedisStore 会话超时的 Node.JS
【发布时间】:2012-09-23 15:20:19
【问题描述】:

我正在使用 Redis 将会话存储在我的 node.js 应用程序中,托管在 heroku 上,但 redis 正在保存会话,我怎样才能让它们自动过期?

我的快递应用是这样配置的:

var app = express.createServer(
  express.static(__dirname + '/public', { maxAge: 31557600000 }),
  express.cookieParser(),

    express.session({ secret: 'secret', store: new RedisStore({
          host: 'myredishost',
          port: 'port',
          pass: 'myredispass',
          db: 'dbname'
      })})
);

【问题讨论】:

    标签: node.js heroku redis


    【解决方案1】:

    由于 Connect 会话中间件文档状态,您需要在 cookie 对象上设置 maxAge 属性:

    express.session({ secret: 'secret', store: ..., cookie: { maxAge: 60000 }});
    

    在此处了解更多信息:http://senchalabs.github.com/connect/middleware-session.html

    【讨论】:

    • 但它也会删除存储在redis上的会话吗?还是只是用户cookie?如果我可以设置密钥过期时间,那就太好了,像这样:redis.io/commands/expire
    • 它删除了会话,可能还有我不确定的 cookie。无论如何设置最大年龄,会话将自行到期。
    • MaxAge 设置redis key的过期时间,过期后key会从数据库中删除
    【解决方案2】:

    如果您使用 req.session.cookie.maxAge,它们将根据 cookie 过期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多