我的项目是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 : "/"
});
如上所述
https://github.com/expressjs/session/issues/507#issuecomment-328290070
您可以将代码更改为
res.clearCookie('connect.sid', {path: '/'}).status(200).send('Ok.');
上面的代码对我来说很好。
谢谢。