【问题标题】:Async validation function for Swagger + Node.jsSwagger + Node.js 的异步验证功能
【发布时间】:2013-04-27 00:26:42
【问题描述】:

所以,我使用的是 Node.js + Swagger + MongoDB。

我正在尝试验证所有请求都带有有效的 auth_token,这是存储在 mongo 上的用户的值。 我的问题是 Swagger 支持的验证器需要返回 true 或 false,但是由于我必须检查 Mongo 来验证 auth 令牌,所以整个验证变得异步。

下面是代码,以备不时之需:

swagger.addValidator(
  function validate(req, path, httpMethod) {
      var apiKey = req.headers["auth_token"];
      if (!apiKey) {
        apiKey = url.parse(req.url,true).query["auth_token"]; 
      }

      models.user.validateAuthToken(apiKey, function(err, valid) {
        //Here is where I know if the auth token is valid and it checks against Mongo, so it's async
      });

    return [something]; //this is what the validation sequence is expecting this function to do: return true or false
 });

我该如何解决这个问题?

【问题讨论】:

    标签: node.js mongodb swagger


    【解决方案1】:

    你不能,你可能想用大摇大摆地打开一张票来启用异步验证。

    【讨论】:

    • 哦,我做到了,并提交了一个拉取请求......希望他们接受它。万一有人需要它,我分叉了 swagger 并创建了一个单独的模块来满足我的需求,它被称为:swagger-node-express-ext
    • @Deleteman:这个问题有更新吗?我看到了您的存储库,但没有找到拉取请求,并且您的存储库已过时。另外,我在 google 群组上发现了这个讨论,还谈到了一些我找不到的拉取请求:groups.google.com/forum/#!topic/swagger-swaggersocket/…
    【解决方案2】:

    您使用的是 Swagger 1.2 还是 2.0?如果是 2.0,您可以使用 swagger-tools 连接中间件,以便根据 Swagger 文档为请求连接安全处理程序。它支持Swagger Specification中定义的所有swagger安全机制。

    【讨论】:

    • 这是一个老问题,我可能用的是 1.2,但最好把更新的信息放在这里,以防其他人遇到同样的问题。
    【解决方案3】:

    并且返回异步函数的结果不起作用?

    swagger.addValidator(
      function validate(req, path, httpMethod) {
          var apiKey = req.headers[ 'auth_token' ];
          if (!apiKey) {
            apiKey = url.parse(req.url, true).query[ 'auth_token' ]; 
          }
    
          return models.user.validateAuthToken(apiKey, function(err, valid) {
            // check against mongo
            return validation;
          });    
     });
    

    【讨论】:

    • 我试一试,但听起来 JS 不会等待 validateAuthToken 方法返回以便从 addValidator 返回,它可能会返回 null。不过还是谢谢。
    猜你喜欢
    • 2011-10-19
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    相关资源
    最近更新 更多