【问题标题】:Express-Session picks up expired cookieExpress-Session 获取过期的 cookie
【发布时间】:2018-07-10 18:26:37
【问题描述】:

使用节点 8.11.3、Express 4.16.3、Express-Session 1.15.6

我用一个有效期很短的 cookie 创建了一个会话:

var expiryDate = new Date(Date.now() + 1 * 60 * 1000) // 1 minute
app.use(session({
    store: new MongoStore({ url: config.gmi.db.url }),
    secret: 'sdfsdfsdfsdf',
    resave: true,
    saveUninitialized: true,
    cookie: {
        expires: expiryDate      //TODO secure cookies when we go to HTTPS
    }
}));

我应该在路由上得到 401,但是当我退出,然后重新登录时,似乎我正在拿起过期的会话:

LOGIN SESSION>>>>> {"cookie":{"originalMaxAge":-1181398,"expires":"2018-07-10T17:43:19.339Z","httpOnly":true,"path":"/"},"username":"derek@sdf.com"}
POST /login 200 48578.580 ms - 2
{"cookie":{"originalMaxAge":-1234394,"expires":"2018-07-10T17:43:19.339Z","httpOnly":true,"path":"/"}}
GET /tenants 401 3064.476 ms - 12

这是我的路由中间件:

var auth = function(req, res, next) {
    console.log(JSON.stringify(req.session));
    if (req.session && req.session.username)
        return next();
    else
        return res.sendStatus(401);
};

和我的注销程序:

app.get('/logout', function (req, res) {
        req.session.destroy();
        res.send("logout success!");
    });

我的登录只是设置用户名:

req.session.username = req.body.username;
console.log("LOGIN SESSION>>>>>", JSON.stringify(req.session));

它不应该使用新的 expires 和 originalMaxAge 创建一个新会话吗?我的浏览器上也没有 cookie。

【问题讨论】:

    标签: node.js express express-session


    【解决方案1】:

    我需要重置最大年龄和过期时间,因为它们始终与用户相关联。

    所以我的登录看起来像这样

    //find user in DB
    //make sure password is good
    if (req.session.cookie && req.session.cookie.originalMaxAge < 0) {
        var hour = 1 * 60 * 1000;
        req.session.cookie.expires = new Date(Date.now() + hour)
        req.session.cookie.maxAge = hour
    }
    req.session.username = req.body.username;
    console.log("LOGIN SESSION>>>>>", JSON.stringify(req.session));
    

    以下是一些相关信息: https://github.com/expressjs/session#cookiemaxage-1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 2021-07-08
      • 2018-04-03
      • 1970-01-01
      • 2014-06-27
      相关资源
      最近更新 更多