【发布时间】:2017-01-10 22:35:17
【问题描述】:
每次我关闭所有浏览器窗口然后再次打开网络应用程序时,都会建立一个新会话,这意味着我必须再次进行身份验证。
供您参考,我使用express@4.14.0 作为Web 应用程序框架,express-session@1.14.1 + connect-mongo@1.3.2 作为中间件来存储会话,passport@0.3.2 用于身份验证。
下面是cookie和会话配置的代码:
// CookieParser should be above session
app.use(cookieParser());
// Express MongoDB session storage
app.use(session({
resave: true,
saveUninitialized: true,
name: config.sessionName,
secret: config.sessionSecret,
store: new MongoStore({
mongooseConnection: db.connection,
collection: config.sessionCollection
})
}));
存储在 MongoDB 中的“旧”会话还有两周到期。
Node.js 应用程序似乎无法从浏览器识别“旧”会话,因此创建一个“新”会话并告诉浏览器使用“新”会话。
它不会偶尔发生,但总是会发生,所以我认为我的 Web 应用程序有问题。
【问题讨论】:
-
您需要将会话存储在 cookie 中,使用 cookie-parser
-
刚刚编辑了问题,请参考。我已经在使用
cookie-parser@1.4.3 -
您的 cookie 生命周期可能设置为会话,这意味着当您关闭浏览器时,cookie 就会消失。
标签: node.js session express express-session connect-mongo