node.js - 使用expressjs/nodejs store session登录到redis

标签 node.js session cookies express redis

我正在使用 express/nodejs 存储登录到 redis 的 session ,代码如下:

app.use(express.session({
    key: 'myappname.sid',
    secret: "Some Secret!!!",
    store : new RedisStore({
        host : '127.0.0.1',,
        port : 6379,
    }),
    cookie : {
        maxAge : 604800 // one week
    }
}));

我通过以下方式检查登录状态:

function ensureAuthenticated(req, res, next) {
  if (req.isAuthenticated()) { return next(); }
      res.redirect('/login')
}

当我登录成功时,我看到了 chrome cookie 和 redis 的 session 。 但是,如果我只删除 chrome cookie 或 redis 上的一个 session ,应用程序将没有登录状态。 为什么认证状态同时依赖于 chrome cookie 和 redis。

第二个问题:我是这样加域的

cookie : {
domain:"localhost", // or ".localhost"
maxAge : 604800 // one week
 }

但是当登录成功时,chrome cookie 上没有 session 存储,这是为什么?

最佳答案

对于您的第二个问题,cookie 的 maxAge 需要以毫秒为单位的时间。您的 cookie 将在 604 秒后过期。

对于第一个,这是网络安全的正确工作方式。

关于node.js - 使用expressjs/nodejs store session登录到redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22168183/

相关文章:

node.js - 警告 : node-0. 12.0 已经安装,只是没有链接

node.js - Passport JWT 策略没有被调用

asp.net - HTML5 离线存储 - session 的替代方案?

php - 通过 SESSION 链接用户

Django cookie 没有保存在浏览器上

node.js - Twilio 功能 - 将短信转发到电子邮件?

node.js - 将 Passport-local 与 Sailsjs 一起使用时没有响应

php - 限制授权 php 用户的文件访问

session - 如何在grails中实现cookie、用户跟踪?

javascript - 谷歌分析是否有设置禁止未经同意的用户使用 cookie