Skip to content

Commit 372461f

Browse files
author
程序猿DD-翟永超
authored
Merge pull request #68 from gumutianqi/master
新增Swagger的Authorization全局授权功能
2 parents 7f68606 + cc7bff7 commit 372461f

File tree

4 files changed

+406
-108
lines changed

4 files changed

+406
-108
lines changed

README.md

Lines changed: 95 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,25 @@
1616
# 版本基础
1717

1818
- Spring Boot:1.5.x
19-
- Swagger:2.7.x
19+
- Swagger:2.8.x
2020

2121
# 如何使用
2222

2323
在该项目的帮助下,我们的Spring Boot可以轻松的引入swagger2,主需要做下面两个步骤:
2424

2525
-`pom.xml`中引入依赖:
2626

27+
> 当前最新版本 1.7.0.RELEASE
28+
2729
```xml
2830
<dependency>
2931
<groupId>com.spring4all</groupId>
3032
<artifactId>swagger-spring-boot-starter</artifactId>
31-
<version>1.6.0.RELEASE</version>
33+
<version>1.7.0.RELEASE</version>
3234
</dependency>
3335
```
3436

35-
**注意:从`1.6.0`开始,我们按Spring Boot官方建议修改了artifactId为`swagger-spring-boot-starter`,1.6.0之前的版本不做修改,依然为使用`spring-boot-starter-swagger` !**
37+
**注意:从`1.6.1`开始,我们按Spring Boot官方建议修改了artifactId为`swagger-spring-boot-starter`,1.6.0之前的版本不做修改,依然为使用`spring-boot-starter-swagger` !**
3638

3739
- 在应用主类中增加`@EnableSwagger2Doc`注解
3840

@@ -249,13 +251,102 @@ swagger.ui-config.submit-methods=get,delete
249251
swagger.ui-config.submit-methods=
250252
```
251253

254+
---
255+
256+
### 来自2018年的版本升级,欢呼吧,Coder们
257+
258+
> 2018-03-21 今日春分,细雨如风 `1.7.0` 版本诞生 @gumutianqi
259+
260+
#### UI升级到 2.8.0 版本 (1.7.0 + 支持)
261+
262+
- 扁平化设计
263+
- 更加华丽
264+
- 更加易用
265+
- 可配置项更加自由
266+
267+
268+
### Authorization 鉴权配置 (1.7.0 + 支持)
269+
270+
- 新增 Authorization 配置项
271+
272+
```properties
273+
# 鉴权策略ID,对应 SecurityReferences ID
274+
swagger.authorization.name=Authorization
275+
276+
# 鉴权传递的Header参数
277+
swagger.authorization.key-name=token
278+
279+
# 需要开启鉴权URL的正则, 默认^.*$匹配所有URL
280+
swagger.authorization.auth-regex=^.*$
281+
```
282+
283+
备注:目前支持`ApiKey`鉴权模式,后续添加`Oauth2``BasicAuth`支持
284+
285+
##### 使用须知
286+
287+
> 1. 默认已经在全局开启了`global`的SecurityReferences,无需配置任何参数就可以使用;
288+
> 2. 全局鉴权的范围在可以通过以上参数`auth-regex`进行正则表达式匹配控制;
289+
> 3. 除了全局开启外,还可以手动通过注解在RestController上进行定义鉴权,使用方式如下:
290+
291+
```java
292+
// 其中的ID Authorization 即为配置项 swagger.authorization.name,详细请关注后面的配置代码
293+
@ApiOperation(value = "Hello World", authorizations = {@Authorization(value = "Authorization")})
294+
@RequestMapping(value = "/hello", method = RequestMethod.GET)
295+
String hello();
296+
```
297+
298+
##### 关于如何配置实现鉴权,请关注以下code:
299+
300+
```java
301+
/**
302+
* 配置基于 ApiKey 的鉴权对象
303+
*
304+
* @return
305+
*/
306+
private ApiKey apiKey() {
307+
return new ApiKey(swaggerProperties().getAuthorization().getName(),
308+
swaggerProperties().getAuthorization().getKeyName(),
309+
ApiKeyVehicle.HEADER.getValue());
310+
}
311+
312+
/**
313+
* 配置默认的全局鉴权策略的开关,以及通过正则表达式进行匹配;默认 ^.*$ 匹配所有URL
314+
* 其中 securityReferences 为配置启用的鉴权策略
315+
*
316+
* @return
317+
*/
318+
private SecurityContext securityContext() {
319+
return SecurityContext.builder()
320+
.securityReferences(defaultAuth())
321+
.forPaths(PathSelectors.regex(swaggerProperties().getAuthorization().getAuthRegex()))
322+
.build();
323+
}
324+
325+
/**
326+
* 配置默认的全局鉴权策略;其中返回的 SecurityReference 中,reference 即为ApiKey对象里面的name,保持一致才能开启全局鉴权
327+
*
328+
* @return
329+
*/
330+
private List<SecurityReference> defaultAuth() {
331+
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
332+
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
333+
authorizationScopes[0] = authorizationScope;
334+
return Collections.singletonList(SecurityReference.builder()
335+
.reference(swaggerProperties().getAuthorization().getName())
336+
.scopes(authorizationScopes).build());
337+
}
338+
```
339+
340+
252341
- 其他配置
253342

254343
```properties
255344
# json编辑器
256345
swagger.ui-config.json-editor=false
346+
257347
# 显示请求头
258348
swagger.ui-config.show-request-headers=true
349+
259350
# 页面调试请求的超时时间
260351
swagger.ui-config.request-timeout=5000
261352
```
@@ -281,3 +372,4 @@ swagger.docket.aaa.ignored-parameter-types[1]=com.didispace.demo.Product
281372
- [程序猿DD-翟永超](https://github.com/dyc87112/)
282373
- [小火](https://renlulu.github.io/)
283374
- [泥瓦匠BYSocket](https://github.com/JeffLi1993)
375+
- [LarryKoo-古拉里](https://github.com/gumutianqi)

pom.xml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.spring4all</groupId>
88
<artifactId>swagger-spring-boot-starter</artifactId>
9-
<version>1.6.0.RELEASE</version>
9+
<version>1.7.0.RELEASE</version>
1010

1111
<name>spring-boot-starter-swagger</name>
1212
<url>https://github.com/SpringForAll/spring-boot-starter-swagger</url>
@@ -48,8 +48,9 @@
4848
<properties>
4949
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
5050
<version.java>1.8</version.java>
51-
<version.swagger>2.7.0</version.swagger>
52-
<version.spring-boot>1.5.6.RELEASE</version.spring-boot>
51+
<version.swagger>2.8.0</version.swagger>
52+
<version.spring-boot>1.5.10.RELEASE</version.spring-boot>
53+
<version.lombok>1.16.18</version.lombok>
5354
</properties>
5455

5556
<dependencies>
@@ -81,7 +82,7 @@
8182
<dependency>
8283
<groupId>org.projectlombok</groupId>
8384
<artifactId>lombok</artifactId>
84-
<version>1.16.12</version>
85+
<version>${version.lombok}</version>
8586
<scope>provided</scope>
8687
</dependency>
8788
<dependency>

0 commit comments

Comments
 (0)