给Swagger添加Authorization报文头,让调试更加方便!

2 篇文章 0 订阅
2 篇文章 0 订阅

.net中现目前是没有提供设置自定义Http请求报文头的,当项目中要做JWT权限校验调试时非常的不方便,为了更好的调试API可以在program.cs中对Swagger进行配置。

//配置swagger发送Authorization报文头 
            builder.Services.AddSwaggerGen(
                e =>
                {
                   var scheme = new OpenApiSecurityScheme()
                    {
                        Description = "Authorization header. \r\nExample: 'Bearer 12345abcdef'",
                        Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Authorization" },
                        Scheme = "oauth2",
                        Name = "Authorization",
                        In = ParameterLocation.Header,
                        Type = SecuritySchemeType.ApiKey,
                    };
                    e.AddSecurityDefinition("Authorization", scheme);
                    var requirement = new OpenApiSecurityRequirement();
                    requirement[scheme] = new List<string>();
                    e.AddSecurityRequirement(requirement);
                }
                );


启动项目后可以发现 右上角 多了一个Authorzie的按钮,点击按钮可以对JWT 进行设置

注意 Auhorization中的配置格式 “Bearer JWTcode”,不要忽略中间有个空格,否则容易出错。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swagger2 可以通过添加全局请求参数的方式来自动添加 Authorization 请求。具体步骤如下: 1. 创建一个拦截器类,用于在请求添加 Authorization 参数。 ```java public class AuthInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = "your_token_here"; request.addHeader("Authorization", token); return true; } // 省略其他方法 } ``` 2. 在 Swagger2 配置类中添加全局请求参数。 ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Autowired private AuthInterceptor authInterceptor; @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()) .globalOperationParameters(Collections.singletonList(new ParameterBuilder() .name("Authorization") .description("Authorization token") .modelRef(new ModelRef("string")) .parameterType("header") .required(true) .build())) .securityContexts(Collections.singletonList(SecurityContext.builder() .securityReferences(Collections.singletonList(SecurityReference.builder() .reference("Authorization") .scopes(new AuthorizationScope[0]) .build())) .build())) .securitySchemes(Collections.singletonList(new ApiKey("Authorization", "Authorization", "header"))); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API") .description("API documentation") .version("1.0") .build(); } // 添加拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authInterceptor); } } ``` 在这里我们使用 `globalOperationParameters` 方法添加一个全局请求参数,该参数名为 `Authorization`,类型为 `header`,并且是必须的。我们还需要使用 `securityContexts` 和 `securitySchemes` 方法来配置 Swagger2 使用该参数作为授权信息。 当我们访问 Swagger2 文档时,会自动向请求添加 Authorization 参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值