.Net Core API的Swagger测试加入授权验证(启用JWT授权)

.Net Core 的Swagger测试加入授权验证(启用JWT授权)

参考网址:如何使用Swagger为.NET Core 3.0应用添加JWT授权说明文档 - 简书 (jianshu.com)

--背景、意义:

1、当我们运行项目时,经常会遇到需要授权或者请求时需要带有token才可以实现对应功能(访问对应接口)【例如根据token判断是否登录】

2、*我们需要在要进行判断的对应方法上一一传入Token值,并且一一编写验证Token代码--麻烦;

    *为了解决这一问题,我们通过添加行为过滤器(.Net Core Api 操作过滤器(行为过滤器) +.net core Api过滤器获取QueryString值 或 获取请求标头数据 - じ逐梦 - 博客园 (cnblogs.com)),将相同的验证Token代码统一放在过滤器内,减少了代码冗余,;

    *但是使用过滤器后,在进行Swagger测试时,无法给过滤器传入Token,在运行对应方法时,一直提示我们没有登录(token为空),

       所以我们对Swagger加入 授权验证(启用JWT授权)

      *只要授权成功,则Swagger测试执行不同功能时不需要再输入token信息…

2、 授权验证‘ 和过滤器一起使用的  

 

1、不加入授权验证情况(使用过滤器)

  -----一直会返回401(自定义)就是没有登录的提示

 

 

2、加入授权验证

 

 

2-1代码实现

--在Start up 类中 ConfigureServices方法加入

         //swagger授权方案定义
                c.AddSecurityDefinition("Bearer",  //定义授权方案的名称
                    new OpenApiSecurityScheme()
                {
                    Description = "请输入token:X-Token:{token}",  //描述文字
                    Name = "X-Token",  //参数名--与标题头的参名相同
                    In = ParameterLocation.Header,  //参数放在Header中
                    Type = SecuritySchemeType.ApiKey,  //类型是apikey
                });
                //加载授权方案
                c.AddSecurityRequirement(new OpenApiSecurityRequirement
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference {
                                Type = ReferenceType.SecurityScheme,
                                Id = "Bearer"  //授权方案名称
                            }
                        },
                        new string[] { }
                    }
                });
                //在Swagger中加入验证结束

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      

 

posted @ 2022-05-03 07:59  じ逐梦  阅读(1241)  评论(0)    收藏  举报