Dan*_*nce 8 session node.js express express-session
我看到了很多与此相关的问题,但没有一个答案能解决我的问题。我正在使用express-session,并且只要用户在 cookie MaxAge 过期之前发出请求,我希望用户会话保持活动状态,因此我使用该rolling选项。为了进行测试,我将 MaxAge 过期时间设置为 30 秒。
如果我在两次单击之间仅浏览几秒钟,则会话似乎保持活动状态。但是,如果我发出请求然后等待 20 秒,会话就会过期并且我会被注销,即使我在 30 秒之内。
这是我的express-session配置方式:
var express = require('express')
, cookieParser = require('cookie-parser')
, session = require('express-session');
var app = express();
app.use(cookieParser(EXPRESS_SECRET));
app.use(
session({
cookie: { maxAge : 30000 }, //in milliseconds. 30 seconds for testing
resave: false, //Save the session to store even if it hasn't changed
rolling: true, //Reset the cookie Max-Age on every request
saveUninitialized: false, //Don't create a session for anonymous users
secret: EXPRESS_SECRET,
store: new MongoStore({ mongooseConnection: mongooseConnection })
})
);
Run Code Online (Sandbox Code Playgroud)
我的期望是,设置rolling为 true 应该允许我持续保持登录状态,只要我在每个 MaxAge 中至少单击一次即可。
我还需要做其他事情才能使其正常工作吗?
resave为 true 但它并没有改变我的结果。secure两者设置为 true 和不设置,结果相同(我的网站是 https)saveUninitialized为 true 和 false,结果相同。更新:
太奇怪了,我每 15 秒就会访问同一个页面,并connect.sid在 Chrome 浏览器工具中监视 cookie,它通常会在每次请求时重置 30 秒,但时不时地,当我发出请求时它不会改变。果然,又等了 15 秒,会话就过期了,我就退出了。
我记录了一个问题express-session: https: //github.com/expressjs/session/issues/391
| 归档时间: |
|
| 查看次数: |
5179 次 |
| 最近记录: |