我对NodeJS很陌生。最近,我决定使用mySQL db来存储我的会话(默认为memoryStorage)。现在我有点困惑,cookie的maxage属性如何影响会话到期时间。设置cookie maxage属性是否也设置了会话的过期时间?
我正在使用express-session,并使用express-mysql-session来实现会话存储。我正在localhost上进行所有操作。
我认为可以在2个地方设置会话到期时间:
1。在express-mysql-session的MysqlStore的配置中,参数名称为有效时间。
2。在设置会话时:
app.use(session({
secret: 'My Super Secret',
resave: false,
cookie: {maxAge: 60000}
}))
我从所有位置将其删除(未使用maxAge,未指定到期时间):,并在db中检查了会话: 它将会话到期时间设置为1天== 86400秒。 Cookie过期时间:空
现在我只为cookie设置maxAge:
app.use(session({
secret: 'My Super Secret',
resave: false,
store: sessionStore,
saveUninitialized: false,
cookie: {maxAge: 60000}
}));
但是这次我的会话过期时间也设置为60000毫秒。为什么? 我确实读过express-session read.me,但没有告诉我如何设置会话maxAge。它解释了有关cookie maxAge的问题。
这是我的想法: 它从2个位置中的最后一个设置会话的到期时间。 我的问题: 设置cookie maxAge是否还会设置会话的过期时间。他们是同一件事吗?我确实认为它们不同,因为会话在服务器端,cookie在客户端。因此,它们的到期时间必须不同。对? 最后,如何设置会话过期时间和cookie过期时间彼此不同。
const config = {
"host": "localhost",
"user": "root",
"password": "root",
"database" : "Test",
"expiration": 86400000,
"clearExpired": true,
"checkExpirationInterval": 10000,
}
const sessionStore = new MySQLStore(config);
//session set up
app.use(session({
secret: 'My Super Secret',
resave: false,
store: sessionStore,
saveUninitialized: false,
cookie: {maxAge: 60000}
}));
DB entry for the session created: see the expiration time seconds elapsed from epoch.