为 express.js 续订 Cookie 会话
Renewing Cookie-session for express.js
我正在使用 Expresss.js 的 cookie-session 模块来处理会话。
我希望在每次加载页面(或 ajax 调用)时更新会话。这就是他们通常在任何地方工作的方式。
文档对此只字未提。
我试过这样做,但没有成功:
app.use(function(req,res,next ){
req.sessionOptions.maxAge = 20*1000;
return next();
});
我怀疑您没有向客户端发送响应 cookie。我用一个中间件解决了同样的问题(使用 express 和 cookie-session),该中间件发送一个包含每个 get 的不同值的 cookie:
var cookieSession = require('cookie-session')
app.use(cookieSession({
key: cookieKey,
secret: cookieSecret,
maxAge: 1 * 60 * 60 * 1000 // 1 hour (rolling)
})
);
app.get('*', function(req, res, next) {
// To update the session expiration time we need to send the new
// expiration in the response cookie.
// To send again the response cookie to the client we need to
// update the session object.
req.session.fake = Date.now();
next();
});
的确,如果会话对象does not change, cookie-session v. 1.2.0 does not set the Set-Cookie header发送响应cookie给客户端。
我正在使用 Expresss.js 的 cookie-session 模块来处理会话。
我希望在每次加载页面(或 ajax 调用)时更新会话。这就是他们通常在任何地方工作的方式。
文档对此只字未提。
我试过这样做,但没有成功:
app.use(function(req,res,next ){
req.sessionOptions.maxAge = 20*1000;
return next();
});
我怀疑您没有向客户端发送响应 cookie。我用一个中间件解决了同样的问题(使用 express 和 cookie-session),该中间件发送一个包含每个 get 的不同值的 cookie:
var cookieSession = require('cookie-session')
app.use(cookieSession({
key: cookieKey,
secret: cookieSecret,
maxAge: 1 * 60 * 60 * 1000 // 1 hour (rolling)
})
);
app.get('*', function(req, res, next) {
// To update the session expiration time we need to send the new
// expiration in the response cookie.
// To send again the response cookie to the client we need to
// update the session object.
req.session.fake = Date.now();
next();
});
的确,如果会话对象does not change, cookie-session v. 1.2.0 does not set the Set-Cookie header发送响应cookie给客户端。