园子里已经有很多.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. IE对CSS样式的数量和大小的限制

    项目中遇到的问题,css写的样式无法渲染,各种百度后发现大概是这个原因: IE对CSS样式的数量和大小的限制 文档中只有前31个link或style标记关联的CSS能够应用. 从第32个开始,其标记关 ...

  2. hdu5417(BC)

    题目链接:点这儿 Victor and Machine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K ( ...

  3. hdfs笔记

    Distributed File System 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文 ...

  4. JAVA启动参数整理

    http://blog.csdn.net/turkeyzhou/article/details/7619472 java启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的 ...

  5. vim diff 的使用

    vimdiff 是vim的比较工具可以对两个文件进行差异比较和快速合并 1. 使用vimdiff 比较两个文件 方式一 vimdiff  file_left  file_right   或者  vim ...

  6. python 安装protobuf

    安装准备:python和protoc(编译proto到各个语言) 下载protobuf源代码(各种语言实现):https://github.com/google/protobuf  1.到Python ...

  7. ASP.NET动态网站制作(8)-- JS(3)

    前言:JS的第三节课,这节课主要讲函数.对象及方法. 内容: 1.九九乘法表例子: HTML代码: <!DOCTYPE html> <html xmlns="http:// ...

  8. fzu 2039 Pets (简单二分图 + (最大流 || 二分图))

    Are you interested in pets? There is a very famous pets shop in the center of the ACM city. There ar ...

  9. 【BZOJ3251】树上三角形 暴力

    [BZOJ3251]树上三角形 Description 给定一大小为n的有点权树,每次询问一对点(u,v),问是否能在u到v的简单路径上取三个点权,以这三个权值为边长构成一个三角形.同时还支持单点修改 ...

  10. 九度OJ 1074:对称平方数 (数字特性)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4804 解决:2173 题目描述: 打印所有不超过n(n<256)的,其平方具有对称性质的数. 如11*11=121 输入: 无任何输 ...