res.clearCookie()和req.session.destroy()之间的实际区别是什么?

时间:2019-09-28 00:01:21

标签: node.js express express-session

我正在使用node.jsexpressexpress-session软件包来测试各种CRUD实现。

res.clearCookie()req.session.destroy()之间的实际区别是什么?

以下两种代码模式似乎都可以完成相同的任务,但是我想知道我是否缺少一些重要的东西。

代码模式1:

router.post('/logout', function(req, res, next) {
    req.session.destroy( function(error) {
        if(error) {
            console.log(error);
        }
        res.redirect('/');
    });
});

代码模式2:

router.post('/logout', function(req, res, next) {
    res.clearCookie(SESSION_NAME);
    res.redirect('/');
});

1 个答案:

答案 0 :(得分:3)

res.clearCookie()只会删除cookie,并且如果您可以某种方式恢复cookie(如果有备份或有人偷了它),则将重新登录(或cookie的任何功能)。如果您使用req.session.destroy(),则会话也会在服务器中无效,因此,即使您获得了cookie,也不会获得该会话。