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

What is the practical difference between res.clearCookie() and req.session.destroy()?

我正在使用 node.js,以及 expressexpress-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('/');
});

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