gpt4 book ai didi

mongodb - 如何删除快速 session cookie

转载 作者:可可西里 更新时间:2023-11-01 09:44:40 26 4
gpt4 key购买 nike

我正在使用快速 session 和 mongo 连接进行用户身份验证,角度客户端通过 CORS 请求使用它。

app.use(express.cookieParser());
app.use(express.session({
secret: 'xxxxxx',
store: new MongoStore({
db: 'dbname',
clear_interval: 3600,
host: 'localhost',
port: 27017
})
}));

登录正常,cookie 被删除, session 按预期工作。

我的问题是结束 session 。我有一个注销路线,它基本上是这样做的:

req.session.destroy(function() {
// log out code
});

但是在 mongo db.sessions 中, session 仍然存在,sid cookie 仍然保留在用户代理上,因此如果用户在注销后重新访问任何“ protected ”的 URL, session 将重新生成。

所以看起来我需要删除 cookie 或从数据库中删除 session ,后者似乎是错误的,所以我试图删除 cookie,但没有运气,在 Express 中尝试了这个:

req.session.destroy(function() {
res.clearCookie('connect.sid', { path: '/' });
});

看来我无法使用 javascript 删除客户端上的 sid cookie,因为它只是 http (??) 这不起作用:

document.cookie = 'connect.sid=; path=/; domain=localhost; expires=Thu, 01 Jan 1970 00:00:01 GMT;';

关于如何摆脱这个烦人的 session cookie 的任何想法??!

最佳答案

req.session.destroy() 应该清除数据库中的 session 。

Express 在尝试销毁 session 时可能使用了不同的 session ID。确保 Session.prototype.destroy 实际上正在提取与 mongodb.sessions 中的 id 相匹配的正确 this.id

我刚遇到这个问题,这是因为我向服务器发出的注销用户的请求不包含 session cookie(遗漏了 withCredentials)。

$.ajax({
url: 'http://url/auth/logout',
type: 'GET',
xhrFields: {
withCredentials: true
}
});

这导致 express 为请求生成一个新的 session ID,并要求 mongodb 删除具有该新 ID 的 session (保持旧 session 不变)。

关于mongodb - 如何删除快速 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22349645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com