SwaggerConfig.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.jpsoft.smart.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import springfox.documentation.builders.ApiInfoBuilder;
  6. import springfox.documentation.builders.PathSelectors;
  7. import springfox.documentation.builders.RequestHandlerSelectors;
  8. import springfox.documentation.service.*;
  9. import springfox.documentation.spi.DocumentationType;
  10. import springfox.documentation.spi.service.contexts.SecurityContext;
  11. import springfox.documentation.spring.web.plugins.Docket;
  12. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. @Configuration
  16. @EnableSwagger2
  17. public class SwaggerConfig {
  18. @Bean
  19. public Docket createRestApi() {
  20. return new Docket(DocumentationType.SWAGGER_2)
  21. .apiInfo(apiInfo())
  22. .select()
  23. .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
  24. .paths(PathSelectors.any())
  25. .build()
  26. //添加登录认证
  27. .securitySchemes(securitySchemes())
  28. .securityContexts(securityContexts());
  29. }
  30. private List<ApiKey> securitySchemes() {
  31. //设置请求头信息
  32. List<ApiKey> result = new ArrayList<>();
  33. ApiKey apiKey = new ApiKey("Authorization", "Authorization", "header");
  34. result.add(apiKey);
  35. return result;
  36. }
  37. private List<SecurityContext> securityContexts() {
  38. //设置需要登录认证的路径
  39. List<SecurityContext> result = new ArrayList<>();
  40. result.add(getContextByPath("/*"));
  41. return result;
  42. }
  43. private SecurityContext getContextByPath(String pathRegex){
  44. return SecurityContext.builder()
  45. .securityReferences(defaultAuth())
  46. .forPaths(PathSelectors.regex(pathRegex))
  47. .build();
  48. }
  49. private List<SecurityReference> defaultAuth() {
  50. List<SecurityReference> result = new ArrayList<>();
  51. AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
  52. AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
  53. authorizationScopes[0] = authorizationScope;
  54. result.add(new SecurityReference("Authorization", authorizationScopes));
  55. return result;
  56. }
  57. private ApiInfo apiInfo() {
  58. return new ApiInfoBuilder()
  59. .title("后台接口文档")
  60. .description("")
  61. .termsOfServiceUrl("")
  62. .version("1.0")
  63. .build();
  64. }
  65. }