如何配置Swagger?
admin
2023-02-16 14:00:12
0

Swagger 注册:

        services.AddSwaggerGen(c =>
        {
            c.OperationFilter();
            var security = new Dictionary> { { "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(); 这只是一个自定义个 Paramater 的过滤器.用户为哦通用添加 信息,为特定Filter 添加信息用

• var security = new Dictionary> { { "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

/// 
/// swagger 增加 AUTH 选项
/// 
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> { { "Bearer", new string[] { } }, };
            var ls = new List>>();
            ls.Add(security);
            operation.Security = ls;               
        }
      }
}
   operation.Security = ls;          就是安全认证的信息 配置,我没找到 api doc ,

有了他
我们还要把 :
c.AddSecurityRequirement(security);
注释了,因为他时注册全局的 身份认账.
其他的就不用做修改了, 这里我比较懒  和和代码的容易理解 没有 把配置信息 list 防止到全局,但也没有大问题,毕竟用一次

相关内容

热门资讯

尺素金声|中国经济“失速论”站... 一季度GDP同比增长5.0%、二季度增长4.3%、上半年增长4.7%,2026年中国经济半年报发布后...
NVIDIA最深的护城河要凉!... 7月24日消息,AMD在Advancing AI预简报会上表示,CUDA已不再是外界想象中的那条护城...
廖杰远:三大智能体协同闭环,A... 中国日报网7月24日电 7月22日,在2026年世界互联网大会数字丝路发展论坛数智健康分论坛上,微医...
AI时代构筑超级底座 维谛技术... 文/本报记者 当前,人工智能产业竞争持续向产业链上游延伸,算力竞争早已不再局限于计算芯片性能比拼。具...
刚签核协议不到24小时,美国突... 美国东部时间7月22日下午,美国宣布与沙特阿拉伯签署了一项民用核能协议。据美国有线电视新闻网(CNN...
中国信通院牵头,数据编织国际标... IT之家 7 月 24 日消息,中国信通院今日发文称,国际电信联盟第 21 研究组(ITU-T SG...
国内首颗商业空间碎片监测卫星发... 【国内首颗商业空间碎片监测卫星发射成功】《科创板日报》24日讯,7月24日上午,中科宇航力箭一号运载...
邓煜,诗人,数学家,老二次元 来源 视觉中国菲尔兹奖的通知邮件抵达时,普林斯顿大学数学博士、芝加哥大学数学系教授邓煜正在看一本恋爱...
安全生产许可证状态不是“有效”... 工程公司的安全生产许可证在官方系统显示为“其他”状态,有一栏则显示“整改”,却成为高标准农田项目的第...
深化产教融合 推进数智育人 哈... 7月23日,由阿里国际人工智能人才孵化中心(以下简称“阿里国际AITIC”)主办的“智启未来·数智赋...