cookie.maxAge如何影响会话到期时间?都是同一件事吗?

时间:2019-04-10 10:28:06

标签: node.js express-session

我对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}
}));

Code Snippet of my server.js

DB entry for the session created: see the expiration time seconds elapsed from epoch.

Current time in epoch, Its around 40 seconds less than expiration time of session, which means session expiration time was 60 seconds.( took me a while to take screenshot)

0 个答案:

没有答案