2016-12-09 10 views

答えて

3

いじりの時間後に私は、このソリューション

が最初に以下のようにIOperationFilterを実装した:

public class AddRequiredHeaderParameter : IOperationFilter 
    { 
     void IOperationFilter.Apply(Operation operation, OperationFilterContext context) 
     { 
      var param = new Param(); 
      param.Name = "authorization"; 
      param.In = "header"; 
      param.Description = "JWT Token"; 
      param.Required = true; 
      param.Type = "string"; 
      if (operation.Parameters == null) 
       operation.Parameters = new List<IParameter>(); 
      operation.Parameters.Add(param); 
     } 
    } 

そして、ここで非常に重要なことがある

class Param : IParameter 
    { 

     public string Description { get; set; } 

     public Dictionary<string, object> Extensions { get {return new Dictionary<string, object>{{"test", true}};} } 

     public string In { get; set; } 

     public string Name { get; set; } 

     public string Type { get; set; } 

     public bool Required { get; set; } 
    } 

IParameter

インタフェースを実装インタフェースでは ではないTypeプロパティが必要ですが、bにする必要があります威張っ-UI は

それが必要になりますし、最終的にあなたのswashbuckle設定にそれをフックアップ

services.ConfigureSwaggerGen(options => 
{ 
    options.OperationFilter<AddRequiredHeaderParameter>(); 
    options.SingleApiVersion(new Info 
    { 
     Version = "v1", 
     Title = "Test", 
     Description = "Test Service", 
     TermsOfService = "None" 
    }); 
    options.DescribeAllEnumsAsStrings(); 
}); 

はそれが役に立てば幸いそこeと;)モフセンの回答に基づいて

2

は私達ができる考え出しましたこれを行うには、Iparameterインターフェイスを実装せずに

public class AddRequiredHeaderParameter : IOperationFilter 
{ 
    void IOperationFilter.Apply(Operation operation, OperationFilterContext context) 
    { 
     if (operation.Parameters == null) 
      operation.Parameters = new List<IParameter>(); 
      operation.Parameters.Add(new NonBodyParameter 
      { 
       Name = "Authorization", 
       In = "header", 
       Description = "JWT Token", 
       Required = true, 
       Type = "string" 
      }); 
    } 
} 

最後にあなたはこのコードを使用することができます

services.ConfigureSwaggerGen(options => 
{ 
    options.OperationFilter<AddRequiredHeaderParameter>(); 
    options.SingleApiVersion(new Info 
    { 
     Version = "v1", 
     Title = "Test", 
     Description = "Test Service", 
     TermsOfService = "None" 
    }); 
    options.DescribeAllEnumsAsStrings(); 
}); 
1

To place in swagger-ui navbarスワッシュバックラーconfigが:

services.AddSwaggerGen(c => 
     { 
      c.SwaggerDoc("v1", new Info 
      { 
       ... 
      }); 

      c.AddSecurityDefinition("JWT Token", new ApiKeyScheme 
      { 
       Description = "JWT Token", 
       Name = "Authorization", 
       In = "header" 
      }); 
     }); 

それはすべてのリクエストにAuthorizationヘッダとしてJWTトークンを追加します。

関連する問題