首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express-Session拾取过期cookie

Express-Session拾取过期cookie
EN

Stack Overflow用户
提问于 2018-07-11 02:26:38
回答 1查看 185关注 0票数 0

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

我使用一个过期日期非常短的cookie创建了一个会话:

代码语言:javascript
复制
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,但当我注销,然后重新登录时,似乎是在拿起过期的会话:

代码语言:javascript
复制
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

下面是我的路由中间件:

代码语言:javascript
复制
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);
};

和我的注销例程:

代码语言:javascript
复制
app.get('/logout', function (req, res) {
        req.session.destroy();
        res.send("logout success!");
    });

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

代码语言:javascript
复制
req.session.username = req.body.username;
console.log("LOGIN SESSION>>>>>", JSON.stringify(req.session));

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

EN

回答 1

Stack Overflow用户

发布于 2018-07-11 03:27:48

我需要重置最大寿命和过期时间,因为它们总是与用户相关联。

所以我的登录信息如下所示

代码语言:javascript
复制
//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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51271912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档