节点js中的“清除登录会话”是什么意思?

我正在使用express-session节点模块,试图了解node js中的会话。

我们为什么使用cookie? -> HTTP是无状态协议,为了识别来自同一用户的请求,我们使用cookie来识别用户。

通过express-session,我们可以设置cookie配置(maxAge,secretKey等)

现在,如果要清除会话,请使用

req.session.destroy((err) => {
    if(err) {
        return console.log(err);
    }
    res.redirect('/');
 });

该代码可以正常工作,但是清除会话后的事件仍然显示在浏览器中。 服务器仍然可以说您不是有效用户。

在passport.js中,req.logout();做同样的事情清除会话,但浏览器中仍然存在cookie。

这是如何工作的?

inlovelove 回答:节点js中的“清除登录会话”是什么意思?

  

我们为什么使用cookie? -> HTTP是无状态协议,为了识别来自同一用户的请求,我们使用cookie来识别用户。

当服务器要跟踪特定用户或来自特定浏览器的数据时,将使用Cookie。用户登录服务的情况导致需要从一个请求到下一个请求知道该请求来自谁,该请求是否已被验证为给定用户,等等。使用cookie来提供有关将来的信息来自给定用户的请求。 Cookies既可以用来保存所需的特定信息,也可以用来保存某种标识符,然后服务器可以使用它来查找该请求/用户的所需信息。

  

该代码可以正常工作,但是清除会话后的事件仍然显示在浏览器中。服务器仍然可以说您不是有效用户。

一个会话通过获得两条信息而起作用。在服务器上查找来自cookie的某种加密ID,以找到匹配的会话对象。然后,会话对象可以包含与该特定用户有关的信息。可以通过删除cookie或删除会话来破坏会话的有效性。无论哪种情况,浏览器都不会提供带有下一个可以与会话对象匹配的请求的加密ID。

删除会话对象会更加安全,因为即使您仅删除了cookie,但是cookie已被某些中介“窃取”,那么即使该cookie,中介仍可以提供他们已经窃取的cookie。已从目标浏览器中删除。显然,如果您删除服务器上的会话,那么即使是被窃取的Cookie也无济于事。释放不再需要的会话对象的会话内存或存储空间也很有用,尽管在大多数实现中,它们将在将来的某个时间“超时”并以这种方式进行清理。

  

在passport.js中,req.logout();做同样的事情清除会话,但浏览器中仍然存在cookie。

对于每个the Passport documentationreq.logout()从当前请求对象中删除req.user属性,并清除登录会话。该文档没有说任何有关修改或删除登录cookie的信息,并且逻辑上认为清除cookie的方法应该在res对象上,而不是req对象上。

本文链接:https://www.f2er.com/3140714.html

大家都在问