我正在将 passport.js 与 express-session 和connect-mongo一起使用。
一切正常,除了当用户注销会话时,我一直存在于数据库中。会话过期后,我看到它已被删除,但注销后未删除。
这些是设置的一部分:
const express = require("express");
const session = require("express-session");
const MongoStore = require('connect-mongo')(session);
app.use(passport.initialize());
app.use(passport.session());
app.use(
session({ store: new MongoStore({ dbPromise: db.getDb(),ttl: 5 * 24 * 3600/* In seconds */, touchAfter: 24 * 3600/* In seconds */ }), secret: "keyboard cat", resave: false, saveUninitialized: false })
);
这是存储在数据库中的会话的实例:
{
"_id": "ppWwMDmGylNJxbApYuKasbGnaYTNSi1Y",
"expires": {
"$date": "2019-01-27T19:35:59.841Z"
},
"lastModified": {
"$date": "2019-01-22T19:35:59.841Z"
},
"session": "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"returnTo\":\"/\",\"flash\":{\"success\":[\"user lorem ipsum\"]},\"passport\":{}}"
}
我应该在注销路径中手动删除会话吗?我认为应该有更合理的方法。