如何从Cookie中删除connect.sid

时间:2018-08-21 10:16:27

标签: node.js express passport.js

我的项目是react + nodejs + express,我正在使用带有oauth策略的通行证进行身份验证。

我有一些特定的情况,如果OAuth成功通过身份验证,我仍然需要在nodejs端的Oauth回调端点中检查用户的角色,因此如果不允许用户角色。我将需要删除会话,以防他下次通过以下代码通过oauth身份验证:

app.get('/auth/check', ensureAuthenticated, function(req, res) {
  res.status(200);
    res.send("authorization passed");
});

function ensureAuthenticated(req, res, next) {
  if (!req.isAuthenticated()) {
        // req.session.originalUrl = req.originalUrl;
        res.status(401);
    res.send("authorization failed");
    //res.redirect('http://localhost:3000/login');
    } else {
        return next();
    }
}

但是我无法通过

删除connect.sid
req.logOut();
      req.session.destroy(function (err) {
        res.clearCookie('connect.sid', {
          path : "/"
        });

1 个答案:

答案 0 :(得分:0)

所述
  

https://github.com/expressjs/session/issues/507#issuecomment-328290070

您可以将代码更改为

res.clearCookie('connect.sid', {path: '/'}).status(200).send('Ok.');

上面的代码对我来说很好。

谢谢。