2013-10-10 28 views
2

我似乎无法找到一种方法来防止Express/Connect创建会话,直到我有一个有效的用户登录。如何避免会话,直到在快速登录内

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

但是,无论何时用户通过身份验证,我确实需要会话,因为我使用Passport.js进行身份验证,需要会话以及我确实需要从发送的cookie信息加载会话数据。

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

感谢 亚历

回答

1

如果你可以轻松地识别在查询时调用的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(),并确保没有任何其他影响。