园子里已经有很多.NET Core 集成Swagger的文章,但对于使用授权的介绍蛮少的。

public static class SwaggerServiceExtensions
{
public static IServiceCollection AddSwaggerCustom(this IServiceCollection services, IConfiguration configuration)
{
//注册SwaggerAPI文档服务
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info
{
Title = configuration["GlobalSettings:ProjectName"],
Version = "v1",
});
options.AddSecurityDefinition("Bearer", new ApiKeyScheme
{
Description = "请输入带有Bearer的Token",
Name = "Authorization",
In = "header",
Type = "apiKey"
});
//Json Token认证方式,此方式为全局添加
options.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
{
{ "Bearer", Enumerable.Empty<string>() }
});
          //获取应用程序根目录路径,官方写法
var basePath = PlatformServices.Default.Application.ApplicationBasePath;
//linux环境下获取路径没有问题
//var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
//使用更简洁的AppContext.BaseDirectory、linux下也没问题
//var basePath = AppContext.BaseDirectory;
//设置Swagger注释 需要 右键项目 -> 生成 -> 输出 -> 勾选XML文档文件 才会产生XML文件
var xmlPath = Path.Combine(basePath, "SexyBook.ClientApi.xml");
if (System.IO.File.Exists(xmlPath))
options.IncludeXmlComments(xmlPath);
}); return services;
} public static IApplicationBuilder UseSwaggerCustom(this IApplicationBuilder builder, IConfiguration configuration)
{
//启用Swagger
builder.UseSwagger();
//启用SwaggerUI
builder.UseSwaggerUI(options =>
{
//文档终结点
options.SwaggerEndpoint("/swagger/v1/swagger.json", $"{configuration["GlobalSettings:ProjectName"]} API V1");
//文档标题
options.DocumentTitle = configuration["GlobalSettings:ProjectName"];
//页面API文档格式 Full=全部展开, List=只展开列表, None=都不展开
options.DocExpansion(DocExpansion.List);
});
return builder;
}
}

此方式乃全局应用,每个接口服务都能直接应用上Token,当然如果你不喜欢可以选择 实现IOperationFilter接口

public class SwaggerOperationFilter : IOperationFilter
{
public void Apply(Swashbuckle.AspNetCore.Swagger.Operation operation, OperationFilterContext context)
{
operation.Parameters = operation.Parameters ?? new List<IParameter>();
var info = context.MethodInfo;
context.ApiDescription.TryGetMethodInfo(out info);
try
{
Attribute attribute = info.GetCustomAttribute(typeof(AuthorizeAttribute));
if (attribute != null)
{
operation.Parameters.Add(new BodyParameter
{
Name = "Authorization",
@In = "header",
Description = "access_token",
Required = true
});
} }
catch
{ }
} }

接下来调用 options.OperationFilter<SwaggerOperationFilter>(); 就好啦

public static class SwaggerServiceExtensions
{
public static IServiceCollection AddSwaggerCustom(this IServiceCollection services, IConfiguration configuration)
{
//注册SwaggerAPI文档服务
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info
{
Title = configuration["GlobalSettings:ProjectName"],
Version = "v1",
});
//使用过滤器单独对某些API接口实施认证
options.OperationFilter<SwaggerOperationFilter>(); //获取应用程序根目录路径,官方写法
var basePath = PlatformServices.Default.Application.ApplicationBasePath;//设置Swagger注释 需要 右键项目 -> 生成 -> 输出 -> 勾选XML文档文件 才会产生XML文件
var xmlPath = Path.Combine(basePath, "SexyBook.ClientApi.xml");
if (System.IO.File.Exists(xmlPath))
options.IncludeXmlComments(xmlPath);
}); return services;
} public static IApplicationBuilder UseSwaggerCustom(this IApplicationBuilder builder, IConfiguration configuration)
{
//启用Swagger
builder.UseSwagger();
//启用SwaggerUI
builder.UseSwaggerUI(options =>
{
//文档终结点
options.SwaggerEndpoint("/swagger/v1/swagger.json", $"{configuration["GlobalSettings:ProjectName"]} API V1");
//文档标题
options.DocumentTitle = configuration["GlobalSettings:ProjectName"];
//页面API文档格式 Full=全部展开, List=只展开列表, None=都不展开
options.DocExpansion(DocExpansion.List);
});
return builder;
}
}

参考文章

https://ppolyzos.com/2017/10/30/add-jwt-bearer-authorization-to-swagger-and-asp-net-core/

http://www.cnblogs.com/NuoYer/p/8252023.html

https://www.cnblogs.com/yilezhu/p/9241261.html

https://www.cnblogs.com/yanbigfeg/p/9232844.html

https://github.com/domaindrivendev/Swashbuckle.AspNetCore

重新拾取:ASP.NET Core WebApi 使用Swagger支持授权认证的更多相关文章

  1. ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  2. ASP.NET Core WebApi使用Swagger生成api

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  3. ASP.NET Core WebApi使用Swagger生成api说明文档

    1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...

  4. 【转】ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    原文链接:https://www.cnblogs.com/yilezhu/p/9241261.html 引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必 ...

  5. Asp.net Core WebApi 使用Swagger做帮助文档,并且自定义Swagger的UI

    WebApi写好之后,在线帮助文档以及能够在线调试的工具是专业化的表现,而Swagger毫无疑问是做Docs的最佳工具,自动生成每个Controller的接口说明,自动将参数解析成json,并且能够在 ...

  6. Asp.net core WebApi 使用Swagger生成帮助页

    最近我们团队一直进行.net core的转型,web开发向着前后端分离的技术架构演进,我们后台主要是采用了asp.net core webapi来进行开发,开始每次调试以及与前端人员的沟通上都存在这效 ...

  7. Asp.net core WebApi 使用Swagger生成帮助页实例

    最近我们团队一直进行.net core的转型,web开发向着前后端分离的技术架构演进,我们后台主要是采用了asp.net core webapi来进行开发,开始每次调试以及与前端人员的沟通上都存在这效 ...

  8. ASP.NET Core WebApi使用Swagger生成API说明文档【xml注释版】

    ⒈新建ASP.NET Core WebAPi项目 ⒉添加 NuGet 包 Install-Package Swashbuckle.AspNetCore ⒊Startup中配置 using System ...

  9. ASP.NET Core WebApi使用Swagger生成API说明文档【特性版】

    ⒈新建ASP.NET Core WebAPi项目 ⒉添加 NuGet 包 Install-Package Swashbuckle.AspNetCore ⒊Startup中配置 using System ...

随机推荐

  1. Cocos2d-x中Vector&lt;T&gt;容器以及实例介绍

    Vector<T> 是Cocos2d-x 3.x推出的列表容器,因此它所能容纳的是Ref及子类所创建的对象指针,其中的T是模板,表示能够放入到容器中的类型,在Cocos2d-x 3.x中T ...

  2. 【Python】列表~深入篇

    列表是一列按特定顺序排列的元素组成. 在Python中,用方括号[]来表示列表 下面是一个语言列表 Language = ['Chinese','English','Franch','Deutsch' ...

  3. JOB Hunting 总结-----2013-11-5

    从9月份开始的找工作大战,告一段落:其实早在10月中旬就已搞定,现在回想起这过去的几个月,很充实,很疲惫,很挫败又很有成就感!      开始找工作,对未来有过很多憧憬,也很迷茫,不知道自己的未来会在 ...

  4. php图片本身有错无法显示的解决办法

    1.取消所有错误提示 2.如果没有报错,在header前(即设置输出格式前)使用ob_clean();

  5. PowerBuilder -- 其他

    判断某键是否被按下 KeyDown ( keycode ) 继承问题 如果是 uf_1是函数呢   你在父类UO_1的uf_1里面 写了代码,只要在子类UO_2的uf_1写了代码,默认是覆盖(over ...

  6. 基于Apache POI 向xlsx写入数据

    [0]写在前面 0.1) these codes are from 基于Apache POI 的向xlsx写入数据 0.2) this idea is from http://cwind.iteye. ...

  7. 关于 Delphi 中流的使用(7) 压缩与解压缩(TCompressionStream、TDecompressionStream)

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  8. API自动化测试利器——Postman

    自从开始做API开发之后,我就在寻找合适的API测试工具.一开始不是很想用Chrome扩展,用的WizTools的工具,后来试过一次Postman之后就停不下来了,还买了付费的Jetpacks.推出T ...

  9. gridcontrol 之标题 GroupPanel设置 (标题设置,屏蔽右键)

    GroupPanel设置 例如gridcontrol显示标题:“gridcontrol小例子” gridView1.GroupPanelText="gridcontrol小例子"; ...

  10. 一个小公司的前端笔试HTML CSS JS

    网上有这套题的答案,版本也很多,我做了很多参考.本文就当个小笔记,可能有错误,还望指正~ 第1章  Html篇 1. 你做的网页在哪些浏览器测试过?这些浏览器的内核分别是什么? 浏览器类型 内核 Fi ...