authorization_Swagger2自动添加Authorization请求头
时间: 2024-02-03 19:03:51 浏览: 72
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 参数。
阅读全文