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

Swagger 1.2 または 2.0 を使用していますか? 2.0 の場合は、 swagger のドキュメントに基づいて、 swagger-toolsを使用してミドルウェアを接続し、リクエストのセキュリティ ハンドラを接続できます。Swagger Specificationで定義されているすべての Swagger セキュリティ メカニズムをサポートします。

于 2015-02-25T04:55:41.287 に答える
1

できません。非同期検証を有効にするために、swagger でチケットを開くことをお勧めします。

于 2013-05-15T16:44:09.860 に答える