Nodejs Express session超时问题
Nodejs Express session超时问题
下面代码只能登录后操作10秒,就直接过期退出: app.use(express.session({ secret: config.secret, cookie: {httpOnly: true, maxAge: 10000},//10 秒 store: new MongoStore(config.db) }));
Express很奇怪,我想要跟J2ee似得,如果登录后,没有操作超过10秒,才过期退出。。请高手答复。
4 回复
谢谢楼上,有更简单、方便的方法吗?比如第三方库能解决
在Node.js中使用Express处理session超时问题时,可以通过调整session配置中的maxAge
属性来实现。您当前设置的maxAge: 10000
(即10秒)确实导致了session在用户无操作的情况下10秒后就失效。为了达到您的需求,即用户登录后,在一段时间内(例如30分钟)没有进行任何操作才会使session失效,您可以将maxAge
设置为一个较大的值。
示例代码如下:
const express = require('express');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const app = express();
app.use(session({
secret: config.secret,
cookie: {
httpOnly: true,
maxAge: 30 * 60 * 1000 // 30分钟
},
store: new MongoStore(config.db) // 使用MongoDB作为session存储
}));
// 其他中间件和路由定义
app.listen(3000, () => console.log('Server is running on port 3000'));
在此示例中,我们将maxAge
设置为30 * 60 * 1000
,即30分钟。这意味着用户登录后,在30分钟内没有任何操作,session才会自动过期。如果用户在这段时间内有任何交互(如页面浏览、表单提交等),session会重置计时器,延长session的有效期。
这样设置后,session将根据用户的实际活动动态地延长有效期,而非固定时间后立即过期,这更符合您所描述的需求。