问题 node express,如何在注销后清除cookie


基本上我正在从a.example.com重定向到www.example.com,我希望能够在www.example.com上删除cookie(因为cookie是以.example.com作为cookie域创建的),但是以下代码不起作用。

我知道这个问题似乎是重复的问题,我尝试了类似问题的一切,但它不起作用。看看代码 我已经尝试过的

使用express 3.0.3和node 0.10.32。

快递会话中间件

...
var cookiedata = { 
    domain              : '.example.com',
    originalMaxAge      : null,
    httpOnly            : false
};

app.use(express.session({
        store  : ..., 
        secret : ..., 
        key    : 'express.sid', 
        cookie : cookiedata 
}));
...

注销功能

function logout(req, res){
    ...

    req.session.destroy(function(){
        req.session = null;

        res.clearCookie('express.sid', { path: '/' });
        res.redirect('https://www.example.com');

    });
}

我从类似问题中尝试过的

  1. https://github.com/strongloop/express/issues/691

所以我说 path : '/' 在快递会话中间件中,例如:

app.use(express.session({ ..., path : '/' });

没有成功。

  1. https://groups.google.com/forum/#!topic/express-js/PmgGMNOzhgM
    相反res.clearCookie我使用: res.cookie('express.sid','',{expires:new Date(1),path:'/'});

没有成功。


12133
2017-08-20 09:36


起源

你找到了解决方案吗?这里没有接受的答案。 - Samuel Méndez


答案:


这是Express.JS的response.clearCookie(第749行的文件response.js)。

var opts = merge({ expires: new Date(1), path: '/' }, options);
return this.cookie(name, '', opts);

如果在此行设置断点,您将看到在无效日期报告过期。所以不要使用response.clearCookie,而是让它像这个一样立即过期。

response.cookie("express.sid", "", { expires: new Date() });

9
2017-12-08 08:18





这对我有用 cookie-parser 模块:

router.get('/logout', function(req, res){
    cookie = req.cookies;
    for (var prop in cookie) {
        if (!cookie.hasOwnProperty(prop)) {
            continue;
        }    
        res.cookie(prop, '', {expires: new Date(0)});
    }
    res.redirect('/');
});

2
2017-12-14 15:36