扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Swagger 注册:
成都创新互联自2013年创立以来,先为成都等服务建站,成都等地企业,进行企业商务咨询服务。为成都企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。 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 防止到全局,但也没有大问题,毕竟用一次
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流