javascript - node express,注销后如何清除cookie

标签 javascript node.js cookies express express-session

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

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

使用 express 3.0.3 和 Node 0.10.32。

快速 session 中间件

...
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 : '/' 放在 express session 中间件中,例如:

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: '/' });

没有成功。

最佳答案

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

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

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

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

关于javascript - node express,注销后如何清除cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32114720/

相关文章:

node.js - ubuntu 服务器中的虚拟终端无法识别新安装的 nvm

node.js - 如何让 Nodemailer 工作?

jquery - 无法使用 require.js 从backbone.marionette 中的不同文件扩展模型

authentication - 使用 Vanilla 论坛使用 Cookie 对用户进行身份验证

javascript - 在 React 和 Firebase 中 promise 之后如何返回值?

javascript - 使用 frida 在运行时从方法获取变量值

javascript - Content Aware Sidbars 插件博客页面上的错误通知

JavaScript - 根据每种情况,制作数组

node.js - 使用 NodeJs 使用 imagemagick 平铺图像

cookies - 从包括Google Analytics(分析)主域在内的子域设置Cookie