1

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

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

以下是您需要的代码:

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
 });

我该如何解决这个问题?

4

3 回答 3

1

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

于 2013-05-15T16:44:09.860 回答
1

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

于 2015-02-25T04:55:41.287 回答
0

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

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;
      });    
 });
于 2013-04-27T17:17:41.277 回答