22
33import com .google .common .base .Predicate ;
44import com .google .common .base .Predicates ;
5- import com .google .common .collect .Lists ;
65import org .springframework .beans .BeansException ;
76import org .springframework .beans .factory .BeanFactory ;
87import org .springframework .beans .factory .BeanFactoryAware ;
1716import org .springframework .web .bind .annotation .RequestMethod ;
1817import springfox .documentation .builders .*;
1918import 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 .*;
2420import springfox .documentation .spi .DocumentationType ;
21+ import springfox .documentation .spi .service .contexts .SecurityContext ;
2522import springfox .documentation .spring .web .plugins .Docket ;
2623import springfox .documentation .swagger .web .UiConfiguration ;
2724
2825import java .util .*;
2926import java .util .stream .Collectors ;
3027
28+ import static com .google .common .collect .Lists .newArrayList ;
29+
3130/**
3231 * @author 翟永超
3332 * Create date:2017/8/7.
@@ -101,6 +100,8 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
101100 Docket docketForBuilder = new Docket (DocumentationType .SWAGGER_2 )
102101 .host (swaggerProperties .getHost ())
103102 .apiInfo (apiInfo )
103+ .securitySchemes (this .securitySchemes ())
104+ .securityContexts (this .securityContexts ())
104105 .globalOperationParameters (buildGlobalOperationParametersFromSwaggerProperties (
105106 swaggerProperties .getGlobalOperationParameters ()));
106107
@@ -167,6 +168,8 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
167168 Docket docketForBuilder = new Docket (DocumentationType .SWAGGER_2 )
168169 .host (swaggerProperties .getHost ())
169170 .apiInfo (apiInfo )
171+ .securitySchemes (this .securitySchemes ())
172+ .securityContexts (this .securityContexts ())
170173 .globalOperationParameters (assemblyGlobalOperationParameters (swaggerProperties .getGlobalOperationParameters (),
171174 docketInfo .getGlobalOperationParameters ()));
172175
@@ -197,6 +200,39 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
197200 return docketList ;
198201 }
199202
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+
200236
201237 @ Override
202238 public void setBeanFactory (BeanFactory beanFactory ) throws BeansException {
@@ -206,7 +242,7 @@ public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
206242
207243 private List <Parameter > buildGlobalOperationParametersFromSwaggerProperties (
208244 List <SwaggerProperties .GlobalOperationParameter > globalOperationParameters ) {
209- List <Parameter > parameters = Lists . newArrayList ();
245+ List <Parameter > parameters = newArrayList ();
210246
211247 if (Objects .isNull (globalOperationParameters )) {
212248 return parameters ;
@@ -242,7 +278,7 @@ private List<Parameter> assemblyGlobalOperationParameters(
242278 .map (SwaggerProperties .GlobalOperationParameter ::getName )
243279 .collect (Collectors .toSet ());
244280
245- List <SwaggerProperties .GlobalOperationParameter > resultOperationParameters = Lists . newArrayList ();
281+ List <SwaggerProperties .GlobalOperationParameter > resultOperationParameters = newArrayList ();
246282
247283 if (Objects .nonNull (globalOperationParameters )) {
248284 for (SwaggerProperties .GlobalOperationParameter parameter : globalOperationParameters ) {
@@ -268,24 +304,24 @@ private void buildGlobalResponseMessage(SwaggerProperties swaggerProperties, Doc
268304 swaggerProperties .getGlobalResponseMessage ();
269305
270306 // 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 ());
279315
280316 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 );
289325 }
290326
291327 /**
0 commit comments