仅在某些请求上保存用户会话
Only save user session on certain requests
Im使用connect-mongo和express-session来跟踪用户的会话。我有以下代码来设置会话:
app.use(session({
secret: 'scamp',
store: new MongoStore({
mongooseConnection: mongoose.connection,
ttl: 60 * 30 // half hour
})
}));
这样做的问题是,为发送到服务器的每个请求创建一个会话。例如,我使用 Amazon Web Services 来托管我的应用程序,并且每 10 秒向我的服务器发送一个请求以确保它仍然运行(称为运行状况检查)。运行状况检查请求是对 mydomain/health 的 GET 请求。但是使用我拥有的代码,这将创建一个新会话,该会话存储在我的远程Mongo Db的会话集合中。因此,数据库增长非常迅速。
一些背景:我的应用程序允许用户上传文件,然后与每个文件进行交互。我只希望会话跟踪用户正在与之交互的当前文件(在我的会话中,我保持当前文件 ID、文件路径、当前文件参数处于选中状态等)。所以基本上,我只想为我的 API 的某些请求设置会话,而不是全部。
所以我想我会重写我的代码:
var setsession = function (req, res, next){
session({
secret: 'scamp',
store: new MongoStore({
mongooseConnection: mongoose.connection,
ttl: 60 * 30 // half hour
})
})
next();
};
app.use(setsession);
然后,我计划在setSession()
内进行检查以查看请求端点是什么,如果请求是我想要会话的 oen 之一,则设置会话。但是,在更改上面的代码后,这会立即破坏我的应用程序。 下面我有:
app.get('/api/canvas', function(req, res) {
sess = req.session;
var callback = function() {
graphController.constructGraph();
};
console.log('req.session is ', req.session);
var graphController = new GraphController(req, res, sess, callback);
});
现在,在将session()
移出app.use
并移入自己的方法后,req.session undefined
,我的应用程序中断。知道为什么会这样吗?
此外,这是停止在每次请求 API 时存储会话的好方法吗?
saveUninitialized
选项可以防止在会话不包含任何数据时保存会话。
app.use(session({
secret: 'scamp',
store: new MongoStore({
mongooseConnection: mongoose.connection,
ttl: 60 * 30 // half hour
}),
saveUninitialized: false
}));
强制将"未初始化"的会话保存到存储中。会话在新建但未修改时未初始化。选择 false 对于实现登录会话、减少服务器存储使用量或在设置 Cookie 之前遵守需要许可的法律非常有用。选择 false 还有助于解决争用条件,即客户端在没有会话的情况下发出多个并行请求。
默认值为 true,但已弃用默认值,因为默认值将来会更改。请研究此设置并选择适合您的用例的设置。
https://www.npmjs.com/package/express-session#saveuninitialized
- 如何使用javascript localStorage保存用户选择并在不同的html页面中显示
- 如何在视图中保存用户输入内容,并在离开页面时对控制器进行后期调用
- Javascript Hangman游戏如何保存用户输入的单词
- jQuery mobile-保存用户输入的最佳方式是什么
- 向js fiddle添加cookie以保存用户键入的内容
- 仅在某些请求上保存用户会话
- 多次保存用户数据
- jPlayer - 通过页面重定向保存用户设置
- 余烬简单身份验证在会话中保存用户配置文件
- Javascript cookie 用于保存用户首选项并使用共享首选项显示内容
- 如何在表单中保存用户输入数据
- PhoneGap登录页面,如何保存用户信息
- 使用 Javascript 编辑和保存用户 HTML - 它有多安全
- 在jQuery中保存用户输入
- 保存用户以前的搜索查询
- 正在保存用户'刷新页面时的选择
- 保存用户特定的数据
- 我无法在会话中正确保存用户详细信息
- 在网页中使用javascript中的cookie保存用户选择的背景图像
- 使用kiiObject保存用户数据