swagger2接口文档如何设置authorize
时间: 2023-10-08 19:13:43 浏览: 81
Swagger2可以通过设置SecurityScheme来设置authorize。具体步骤如下:
1. 定义SecurityScheme
在Swagger2的配置类中,我们需要定义一个SecurityScheme,用于设置authorize。可以使用ApiKey、BasicAuth、OAuth2等多种认证方式,这里以OAuth2为例:
```java
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.securitySchemes(Arrays.asList(securityScheme()))
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.controller"))
.paths(PathSelectors.any())
.build();
}
private SecurityScheme securityScheme() {
GrantType grantType = new AuthorizationCodeGrantBuilder()
.tokenEndpoint(new TokenEndpoint("http://localhost:8080/oauth/token", "oauthtoken"))
.tokenRequestEndpoint(
new TokenRequestEndpoint("http://localhost:8080/oauth/authorize", "client_id", "client_secret"))
.build();
return new OAuthBuilder().name("oauth2")
.grantTypes(Arrays.asList(grantType))
.scopes(Arrays.asList(scopes()))
.build();
}
private AuthorizationScope[] scopes() {
AuthorizationScope[] scopes = {
new AuthorizationScope("read", "for read operations"),
new AuthorizationScope("write", "for write operations")
};
return scopes;
}
}
```
2. 设置SecurityRequirement
在接口文档中,需要通过SecurityRequirement来指定哪些接口需要认证,哪些不需要认证。可以设置全局的SecurityRequirement,也可以为每个接口单独设置SecurityRequirement。这里以全局设置为例:
```java
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.securitySchemes(Arrays.asList(securityScheme()))
.securityContexts(Arrays.asList(securityContext()))
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.controller"))
.paths(PathSelectors.any())
.build();
}
private SecurityScheme securityScheme() {
//...
}
private SecurityContext securityContext() {
return SecurityContext.builder()
.securityReferences(Arrays.asList(new SecurityReference("oauth2", scopes())))
.forPaths(PathSelectors.any())
.build();
}
private AuthorizationScope[] scopes() {
//...
}
}
```
这样,就可以在接口文档中看到Authorize按钮了。点击按钮后,会弹出一个对话框,要求输入OAuth2的认证信息,然后就可以访问需要认证的接口了。