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

问题描述 投票:0回答:1

我正在使用快速会话节点模块,试图了解节点js中的会话。

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

通过使用快速会话,我们可以设置cookie配置(maxAge,secretKey等)

现在,如果我们想清除会话,则使用

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

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

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

这是如何工作的?

node.js session cookies passport.js express-session
1个回答
0
投票

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

Cookie用于服务器要跟踪特定用户或特定浏览器中的数据的情况。用户登录服务的情况需要从一个请求到下一个请求知道该请求的来源,该请求是否已被验证为给定用户,等等。使用cookie来提供有关将来的信息来自给定用户的请求。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.