园子里已经有很多.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. js:我们应该如何去了解JavaScript引擎的工作原理(转)

    http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件内容,不过 ...

  2. MySQL数据库 常用命令

    1.MySQL常用命令 create database name;创建数据库 use databasename;选择数据库 drop database name 直接删除数据库,不提醒 show ta ...

  3. C语言 指向结构体数组的指针

    当结构体指针变量指向一个结构体变量数组的时候,此时指针变量的值就是结构体数组的首地址 关于如何定义结构体数组,和将结构体指针指向结构体变量数组,不是重点. 重点是,明白结构体指针的是怎么移动的, 我个 ...

  4. 多通道 移位寄存器 verilog

    // Quartus II Verilog Template // Basic 64-stage shift register with multiple taps module basic_shif ...

  5. kernel&uboot学习笔记

    uboot kernel uboot 1.Uboot编译流程分析: uboot是如何编译生成的? 2.根据include/configs/$(target).h可以生成include/autoconf ...

  6. Angualr 实现复选框全选功能

    html <html lang="en"> <head> <meta charset="UTF-8"> <title& ...

  7. linux 更新yum源 改成163源

    安装完CentOS6.3后,为避免从国外站点安装更新速度过慢,需要更改yum更新源,所以从网上找了下更改linux yum源的方法,和大家进行下分享.原理很简单,就是把yum配置文件中的更新源改一下, ...

  8. ANDROID 推送到底哪家强(转)

    之前在群里有同学问我关于推送的一些问题,解答之后我觉得这个话题还挺有用,因为几乎大部分人都会遇到这个问题,那姑且就写篇文章总结给你们吧. 1. 为什么要用推送? 推送功能可谓是现如今任何一个 App ...

  9. JAVA学习第五十二课 — IO流(六)File对象

    File类 用来给文件或者目录封装成对象 方便对文件与目录的属性信息进行操作 File对象能够作为參数传递给流的构造函数 一.构造函数和分隔符 public static void FileDemo( ...

  10. 在WPF对话框中如何验证用户提供的数据

    在WPF中,MS在msdn的WPF应用程序开发中对用户输入的数据验证做了示范,基本思想就是添加各种类型的校验规则,比如最大最小值.字符串长度.是否为空等等,在后在界面绑定数据时添加数据字段的校验.这样 ...