2
2
3
3
import com .google .common .base .Predicate ;
4
4
import com .google .common .base .Predicates ;
5
- import com .google .common .collect .Lists ;
6
5
import org .springframework .beans .BeansException ;
7
6
import org .springframework .beans .factory .BeanFactory ;
8
7
import org .springframework .beans .factory .BeanFactoryAware ;
17
16
import org .springframework .web .bind .annotation .RequestMethod ;
18
17
import springfox .documentation .builders .*;
19
18
import springfox .documentation .schema .ModelRef ;
20
- import springfox .documentation .service .ApiInfo ;
21
- import springfox .documentation .service .Contact ;
22
- import springfox .documentation .service .Parameter ;
23
- import springfox .documentation .service .ResponseMessage ;
19
+ import springfox .documentation .service .*;
24
20
import springfox .documentation .spi .DocumentationType ;
21
+ import springfox .documentation .spi .service .contexts .SecurityContext ;
25
22
import springfox .documentation .spring .web .plugins .Docket ;
26
23
import springfox .documentation .swagger .web .UiConfiguration ;
27
24
28
25
import java .util .*;
29
26
import java .util .stream .Collectors ;
30
27
28
+ import static com .google .common .collect .Lists .newArrayList ;
29
+
31
30
/**
32
31
* @author 翟永超
33
32
* Create date:2017/8/7.
@@ -101,6 +100,8 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
101
100
Docket docketForBuilder = new Docket (DocumentationType .SWAGGER_2 )
102
101
.host (swaggerProperties .getHost ())
103
102
.apiInfo (apiInfo )
103
+ .securitySchemes (this .securitySchemes ())
104
+ .securityContexts (this .securityContexts ())
104
105
.globalOperationParameters (buildGlobalOperationParametersFromSwaggerProperties (
105
106
swaggerProperties .getGlobalOperationParameters ()));
106
107
@@ -167,6 +168,8 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
167
168
Docket docketForBuilder = new Docket (DocumentationType .SWAGGER_2 )
168
169
.host (swaggerProperties .getHost ())
169
170
.apiInfo (apiInfo )
171
+ .securitySchemes (this .securitySchemes ())
172
+ .securityContexts (this .securityContexts ())
170
173
.globalOperationParameters (assemblyGlobalOperationParameters (swaggerProperties .getGlobalOperationParameters (),
171
174
docketInfo .getGlobalOperationParameters ()));
172
175
@@ -197,6 +200,39 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
197
200
return docketList ;
198
201
}
199
202
203
+ /**
204
+ * 配置 Authorization ApiKey
205
+ *
206
+ * @return
207
+ */
208
+ private List <ApiKey > securitySchemes () {
209
+ return newArrayList (
210
+ new ApiKey (swaggerProperties ().getAuthorization ().getName (),
211
+ swaggerProperties ().getAuthorization ().getKeyName (), "header" ));
212
+ }
213
+
214
+ /**
215
+ * 通过正则设置需要传递 Authorization 信息的API接口
216
+ *
217
+ * @return
218
+ */
219
+ private List <SecurityContext > securityContexts () {
220
+ return newArrayList (
221
+ SecurityContext .builder ()
222
+ .securityReferences (defaultAuth ())
223
+ .forPaths (PathSelectors .regex (swaggerProperties ().getAuthorization ().getAuthRegex ()))
224
+ .build ()
225
+ );
226
+ }
227
+
228
+ List <SecurityReference > defaultAuth () {
229
+ AuthorizationScope authorizationScope = new AuthorizationScope ("global" , "accessEverything" );
230
+ AuthorizationScope [] authorizationScopes = new AuthorizationScope [1 ];
231
+ authorizationScopes [0 ] = authorizationScope ;
232
+ return newArrayList (
233
+ new SecurityReference ("BearerToken" , authorizationScopes ));
234
+ }
235
+
200
236
201
237
@ Override
202
238
public void setBeanFactory (BeanFactory beanFactory ) throws BeansException {
@@ -206,7 +242,7 @@ public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
206
242
207
243
private List <Parameter > buildGlobalOperationParametersFromSwaggerProperties (
208
244
List <SwaggerProperties .GlobalOperationParameter > globalOperationParameters ) {
209
- List <Parameter > parameters = Lists . newArrayList ();
245
+ List <Parameter > parameters = newArrayList ();
210
246
211
247
if (Objects .isNull (globalOperationParameters )) {
212
248
return parameters ;
@@ -242,7 +278,7 @@ private List<Parameter> assemblyGlobalOperationParameters(
242
278
.map (SwaggerProperties .GlobalOperationParameter ::getName )
243
279
.collect (Collectors .toSet ());
244
280
245
- List <SwaggerProperties .GlobalOperationParameter > resultOperationParameters = Lists . newArrayList ();
281
+ List <SwaggerProperties .GlobalOperationParameter > resultOperationParameters = newArrayList ();
246
282
247
283
if (Objects .nonNull (globalOperationParameters )) {
248
284
for (SwaggerProperties .GlobalOperationParameter parameter : globalOperationParameters ) {
@@ -268,24 +304,24 @@ private void buildGlobalResponseMessage(SwaggerProperties swaggerProperties, Doc
268
304
swaggerProperties .getGlobalResponseMessage ();
269
305
270
306
// POST,GET,PUT,PATCH,DELETE,HEAD,OPTIONS,TRACE 响应消息体
271
- List <ResponseMessage > postResponseMessages = getResponseMessageList (globalResponseMessages .getPost ());
272
- List <ResponseMessage > getResponseMessages = getResponseMessageList (globalResponseMessages .getGet ());
273
- List <ResponseMessage > putResponseMessages = getResponseMessageList (globalResponseMessages .getPut ());
274
- List <ResponseMessage > patchResponseMessages = getResponseMessageList (globalResponseMessages .getPatch ());
275
- List <ResponseMessage > deleteResponseMessages = getResponseMessageList (globalResponseMessages .getDelete ());
276
- List <ResponseMessage > headResponseMessages = getResponseMessageList (globalResponseMessages .getHead ());
277
- List <ResponseMessage > optionsResponseMessages = getResponseMessageList (globalResponseMessages .getOptions ());
278
- List <ResponseMessage > trackResponseMessages = getResponseMessageList (globalResponseMessages .getTrace ());
307
+ List <ResponseMessage > postResponseMessages = getResponseMessageList (globalResponseMessages .getPost ());
308
+ List <ResponseMessage > getResponseMessages = getResponseMessageList (globalResponseMessages .getGet ());
309
+ List <ResponseMessage > putResponseMessages = getResponseMessageList (globalResponseMessages .getPut ());
310
+ List <ResponseMessage > patchResponseMessages = getResponseMessageList (globalResponseMessages .getPatch ());
311
+ List <ResponseMessage > deleteResponseMessages = getResponseMessageList (globalResponseMessages .getDelete ());
312
+ List <ResponseMessage > headResponseMessages = getResponseMessageList (globalResponseMessages .getHead ());
313
+ List <ResponseMessage > optionsResponseMessages = getResponseMessageList (globalResponseMessages .getOptions ());
314
+ List <ResponseMessage > trackResponseMessages = getResponseMessageList (globalResponseMessages .getTrace ());
279
315
280
316
docketForBuilder .useDefaultResponseMessages (swaggerProperties .getApplyDefaultResponseMessages ())
281
- .globalResponseMessage (RequestMethod .POST , postResponseMessages )
282
- .globalResponseMessage (RequestMethod .GET , getResponseMessages )
283
- .globalResponseMessage (RequestMethod .PUT , putResponseMessages )
284
- .globalResponseMessage (RequestMethod .PATCH , patchResponseMessages )
285
- .globalResponseMessage (RequestMethod .DELETE , deleteResponseMessages )
286
- .globalResponseMessage (RequestMethod .HEAD , headResponseMessages )
287
- .globalResponseMessage (RequestMethod .OPTIONS , optionsResponseMessages )
288
- .globalResponseMessage (RequestMethod .TRACE , trackResponseMessages );
317
+ .globalResponseMessage (RequestMethod .POST , postResponseMessages )
318
+ .globalResponseMessage (RequestMethod .GET , getResponseMessages )
319
+ .globalResponseMessage (RequestMethod .PUT , putResponseMessages )
320
+ .globalResponseMessage (RequestMethod .PATCH , patchResponseMessages )
321
+ .globalResponseMessage (RequestMethod .DELETE , deleteResponseMessages )
322
+ .globalResponseMessage (RequestMethod .HEAD , headResponseMessages )
323
+ .globalResponseMessage (RequestMethod .OPTIONS , optionsResponseMessages )
324
+ .globalResponseMessage (RequestMethod .TRACE , trackResponseMessages );
289
325
}
290
326
291
327
/**
0 commit comments