在Express中login之前如何避免会话

我似乎无法想出一个方法来防止Express / Connect创build会话,直到我有一个有效的用户login。

当使用DB-Backed Session Storage和从非浏览器调用REST Services时,问题尤其突出,因为在这种情况下,连接会话对象将为每个请求创build一个新的会话,我当然要防止这个会话。

然而,每当用户通过身份validation时,我确实需要会话,因为我正在使用Passport.js进行需要会话的身份validation,而且我确实需要从发送的Cookie信息加载会话数据。

查看连接会话代码的来源,似乎总是创build一个新的会话,如果没有从客户端发送没有任何选项,以防止它..?

谢谢Alex

如果您可以在查询时轻松识别对您的API的调用,则可以这样做:

app.use(function(req, res, next){ if ( req.path.indexOf("/api") == 0 ) return next(); else return express.session()( req, res, next ); }); 

这样,会话中间件只有在请求URL不符合某些条件的情况下才会被包含。 我还没有尝试过这种愤怒,所以你可能要考虑初始化函数外的express.session(),并确保没有任何其他影响。