package com.linghu.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.ApiKey; import springfox.documentation.service.AuthorizationScope; import springfox.documentation.service.Contact; import springfox.documentation.service.Parameter; import springfox.documentation.service.SecurityReference; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.linghu.controller")) .paths(PathSelectors.any()) .build(); // 重点修改:使用 securitySchemes + securityContext 替代全局参数 // .securitySchemes(Arrays.asList(apiKey())) // 添加安全方案 // .securityContexts(Arrays.asList(securityContext())); // 应用安全上下文 } // 1. 定义安全方案(在Swagger UI顶部添加Authorize按钮) // private ApiKey apiKey() { // return new ApiKey("BearerToken", "Authorization", "header"); // } // // // 2. 配置安全上下文(全局生效) // private SecurityContext securityContext() { // return SecurityContext.builder() // .securityReferences(defaultAuth()) // .forPaths(PathSelectors.any()) // 对所有路径生效 // .build(); // } // // // 3. 设置默认授权范围 // private List defaultAuth() { // AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); // AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; // authorizationScopes[0] = authorizationScope; // return Arrays.asList(new SecurityReference("BearerToken", authorizationScopes)); // } //http://localhost:8080/swagger-ui.html private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("灵狐GEO系统 接口文档") .description("使用 Swagger2 生成的API文档") .version("1.0.0") .build(); } }