在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(),并确保没有任何其他影响。