中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何配置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

淳化县| 洱源县| 灵宝市| 天水市| 凉城县| 韩城市| 丹阳市| 三亚市| 德化县| 香格里拉县| 黄梅县| 托里县| 开化县| 当阳市| 弥渡县| 锦屏县| 阜城县| 香港| 涟水县| 中牟县| 东安县| 东方市| 同仁县| 新平| 南岸区| 七台河市| 合肥市| 黄大仙区| 江口县| 四会市| 稷山县| 定结县| 开化县| 息烽县| 孝义市| 德庆县| 宁城县| 齐河县| 泸水县| 峨边| 宿州市|