亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何配置Swagger?

發布時間:2020-05-29 14:44:35 來源:億速云 閱讀:356 作者:鴿子 欄目:開發技術

Swagger 注冊:

        services.AddSwaggerGen(c =>
        {
            c.OperationFilter<HttpAuthHeaderFilter>();
            var security = new Dictionary<string, IEnumerable<string>> { { "Bearer", new string[] { } }, };
            c.AddSecurityRequirement(security);
            //添加一個必須的全局安全信息
            //,和AddSecurityDefinition方法指定的方案名稱要一致,
            //這里是Bearer。
            c.DescribeStringEnumsInCamelCase();
            c.DescribeAllParametersInCamelCase();
            c.DescribeAllEnumsAsStrings();
            c.SwaggerDoc("v1", new Swashbuckle.AspNetCore.Swagger.Info
            {
                Title = "接口文檔",
                Version = "v1",
                Description = "YiSpace  LazyCoder is Make",
            });

            string[] files = Directory.GetFiles(AppContext.BaseDirectory, "*.xml");
            //  var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
            //  var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
            foreach (var item in files)
            {
                c.IncludeXmlComments(item, true);
            }
            //var xmlPath = Path.Combine(AppContext.BaseDirectory, "");
            //c.IncludeXmlComments(xmlPath);
            //var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
            //c.IncludeXmlComments(xmlPath);
            // c.IgnoreObsoleteActions();
            c.AddSecurityDefinition("Bearer", new ApiKeyScheme
            {
                Description = "權限認證(數據將在請求頭中進行傳輸) 參數結構: \"Authorization: Bearer {token}\"",
                Name = "Authorization",//jwt默認的參數名稱
                In = "header",//jwt默認存放Authorization信息的位置(請求頭中)
                Type = "apiKey"
            });//Authorization的設置

        });

?  c.OperationFilter<HttpAuthHeaderFilter>(); 這只是一個自定義個 Paramater 的過濾器.用戶為哦通用添加 信息,為特定Filter 添加信息用

? var security = new Dictionary<string, IEnumerable<string>> { { "Bearer", new string[] { } }, };
                c.AddSecurityRequirement(security);
                //,和AddSecurityDefinition方法指定的方案名稱要一致,
                //這里是Bearer。這也是我們之后看見的, Authore.Lock 的原因.因為
我們是開發的API 有些必須要有 認證所以我就添加了全局的注冊.
? 一下這些 就是類型轉化的配置 
c.DescribeStringEnumsInCamelCase();
         c.DescribeAllParametersInCamelCase();
         c.DescribeAllEnumsAsStrings();
?   中間的就不用說了Asp.net Core 官網上都有
?  
 c.AddSecurityDefinition("Bearer", new ApiKeyScheme
                {
                    Description = "權限認證(數據將在請求頭中進行傳輸) 參數結構: \"Authorization: Bearer {token}\"",
                    Name = "Authorization",//jwt默認的參數名稱
                    In = "header",//jwt默認存放Authorization信息的位置(請求頭中)
                    Type = "apiKey"
                });//Authorization的設置
這是核心的因為有了他才會有可定制的 UI 否者不會有我們先看到.
? 同時我個人還沒有就為單個api 添加 Token 開關. 也不不知如何添加 

這樣我們的東西可以用了但是要注意 這里用是 jwt  Bearer 他提交時是沒有給你添加Bearer 所以在使用時 Authorization: Bearer {token} 需要自己加上 Bearer

 延續
看了一下代碼,突來了點靈感 實現了一下單個Action 的 token 認證 這個我們需要用到. IOperationFilter

/// <summary>
/// swagger 增加 AUTH 選項
/// </summary>
public class HttpAuthHeaderFilter : IOperationFilter
{        public void Apply(Operation operation, OperationFilterContext context)
    {            var HasAuth = context.ApiDescription.ActionDescriptor.FilterDescriptors.Any(t => t.Filter is Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter);
        if (HasAuth)
        {
            //operation.Security =new  
            var security = new Dictionary<string, IEnumerable<string>> { { "Bearer", new string[] { } }, };
            var ls = new List<IDictionary<string, IEnumerable<string>>>();
            ls.Add(security);
            operation.Security = ls;               
        }
      }
}
   operation.Security = ls;          就是安全認證的信息 配置,我沒找到 api doc ,

有了他
我們還要把 :
c.AddSecurityRequirement(security);
注釋了,因為他時注冊全局的 身份認賬.
其他的就不用做修改了, 這里我比較懶  和和代碼的容易理解 沒有 把配置信息 list 防止到全局,但也沒有大問題,畢竟用一次

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马龙县| 南漳县| 白城市| 东港市| 江都市| 临清市| 东丽区| 沙雅县| 清新县| 望奎县| 加查县| 乐安县| 顺义区| 武城县| 岳阳县| 隆化县| 长兴县| 宜都市| 江口县| 赞皇县| 大丰市| 姜堰市| 寿宁县| 岑溪市| 屯昌县| 云阳县| 定日县| 沙田区| 沧源| 社会| 迭部县| 名山县| 成武县| 三门县| 白水县| 墨玉县| 南宁市| 河北省| 吉安县| 吐鲁番市| 江西省|