16
16
# 版本基础
17
17
18
18
- Spring Boot:1.5.x
19
- - Swagger:2.7 .x
19
+ - Swagger:2.8 .x
20
20
21
21
# 如何使用
22
22
23
23
在该项目的帮助下,我们的Spring Boot可以轻松的引入swagger2,主需要做下面两个步骤:
24
24
25
25
- 在` pom.xml ` 中引入依赖:
26
26
27
+ > 当前最新版本 1.7.0.RELEASE
28
+
27
29
``` xml
28
30
<dependency >
29
31
<groupId >com.spring4all</groupId >
30
32
<artifactId >swagger-spring-boot-starter</artifactId >
31
- <version >1.6 .0.RELEASE</version >
33
+ <version >1.7 .0.RELEASE</version >
32
34
</dependency >
33
35
```
34
36
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 ` !**
36
38
37
39
- 在应用主类中增加` @EnableSwagger2Doc ` 注解
38
40
@@ -249,13 +251,102 @@ swagger.ui-config.submit-methods=get,delete
249
251
swagger.ui-config.submit-methods =
250
252
```
251
253
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
+
252
341
- 其他配置
253
342
254
343
``` properties
255
344
# json编辑器
256
345
swagger.ui-config.json-editor =false
346
+
257
347
# 显示请求头
258
348
swagger.ui-config.show-request-headers =true
349
+
259
350
# 页面调试请求的超时时间
260
351
swagger.ui-config.request-timeout =5000
261
352
```
@@ -281,3 +372,4 @@ swagger.docket.aaa.ignored-parameter-types[1]=com.didispace.demo.Product
281
372
- [ 程序猿DD-翟永超] ( https://github.com/dyc87112/ )
282
373
- [ 小火] ( https://renlulu.github.io/ )
283
374
- [ 泥瓦匠BYSocket] ( https://github.com/JeffLi1993 )
375
+ - [ LarryKoo-古拉里] ( https://github.com/gumutianqi )
0 commit comments