SpringBoot工程为SwaggerUI添加认证
2019-07-19Backend
当API添加了鉴权后,swagger
如何进行调试呢,比如需要在请求头header
中添加类似token
或者Authorization
之类的。
在Spring
中进行如下简单的配置就可以了。
@Configuration
@EnableSwagger2
class SwaggerConfig {
@Bean
fun generateDocket(): Docket {
return Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api::class.java))
.build()
.securityContexts(listOf(securityContext())) // #1
.securitySchemes(listOf(apiKey())) // #2
.apiInfo(apiInfo())
}
private fun securityContext(): SecurityContext {
return SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.regex("/api/public/admin/.*"))
.build()
}
fun defaultAuth(): List<SecurityReference> {
val authorizationScope = AuthorizationScope("global", "accessEverything")
val authorizationScopes = arrayOf(authorizationScope)
return listOf(SecurityReference("token", authorizationScopes))
}
fun apiKey(): ApiKey {
return ApiKey("token", "X-Auth-Token", "header")
}
private fun apiInfo(): ApiInfo {
return ApiInfo("王郁的API文档",
"用于App测试及独立APP研发",
"2.0",
"http://wycode.cn",
Contact("王郁", "wycode.cn", "wangyu@wycode.cn"),
"wycode.cn All Right Reserved",
"https://wycode.cn",
emptyList())
}
}
关键配置就是上面包含#1和#2注释的两行配置
- 配置安全上下文,我这里配置了
/api/public/admin/.*
下的接口需要添加。 - 配置鉴权类型,我这里使用
ApiKey
。