2

在用户有效登录之前,我似乎无法找到阻止 Express/Connect 创建会话的方法。

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

但是,每当对用户进行身份验证时,我确实需要会话,因为我使用 Passport.js 进行身份验证,这需要会话,并且我确实需要它从发送的 cookie 信息中加载会话数据。

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

谢谢亚历克斯

4

1 回答 1

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

于 2013-10-10T08:31:59.267 回答