.net core 实例教程(十二)配置启用Swagger中的【Authorize】按钮
小白浏览:8312024-03-21 17:24:36本文累计收益:0我也要赚钱

本文源码下载地址:http://www.80cxy.com/Blog/ResourceView?arId=202403191532545995NAAqJh

系列教程地址:http://www.80cxy.com/Blog/ArticleView?arId=202403191517574161ay3s5V

用户登录成功之后,后台返回JWT格式的token,再后续访问其他接口时需要携带token,为方便Swagger调试,可以开启Swagger的Authorize按钮用于设置接口调用携带的token。默认Swagger不显示Authorize。配置完Swagger页面显示如下:

点击按钮,输入token,注意格式必须在token前面增加“Bearer “字符。

一、配置代码如下:

在SignUp.Common项目JWT文件夹中新增SwaggerGenOptionsExtensions类,代码如下:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

namespace SignUp.Common.JWT
{
    public static class SwaggerGenOptionsExtensions
    {
        /// <summary>
        /// 为Swagger增加Authentication报文头
        /// </summary>
        /// <param name="c"></param>
        public static void AddAuthenticationHeader(this SwaggerGenOptions c)
        {
            c.AddSecurityDefinition("Authorization", new OpenApiSecurityScheme
            {
                Description = "Authorization header. \r\nExample: 'Bearer 12345abcdef'",
                Name = "Authorization",
                In = ParameterLocation.Header,
                Type = SecuritySchemeType.ApiKey,
                Scheme = "Authorization"
            });

            c.AddSecurityRequirement(new OpenApiSecurityRequirement()
            {
                {
                    new OpenApiSecurityScheme
                    {
                        Reference = new OpenApiReference
                        {
                            Type = ReferenceType.SecurityScheme,
                            Id = "Authorization"
                        },
                        Scheme = "oauth2",
                        Name = "Authorization",
                        In = ParameterLocation.Header,
                    },
                    new List<string>()
                }
            });
        }
    }
}
二、启用Swagger中的【Authorize】按钮配置

在WebApplicationBuilderExtensions配置类的ConfigureExtraServices方法增加如下配置代码:

//启用Swagger中的【Authorize】按钮。这样就不用每个项目的AddSwaggerGen中单独配置了
services.Configure<SwaggerGenOptions>(c =>
{
    c.AddAuthenticationHeader();
});
学习交流

附笔者学习 .net core开发时参考相关项目实例源码:asp.net core webapi项目实例源代码锦集下载(72个)

评论列表
发表评论
+ 关注