123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package org.jeecg.config;
- import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
- import io.swagger.annotations.ApiOperation;
- import lombok.extern.slf4j.Slf4j;
- import org.jeecg.common.constant.CommonConstant;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Import;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
- import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
- import springfox.documentation.builders.ApiInfoBuilder;
- import springfox.documentation.builders.ParameterBuilder;
- import springfox.documentation.builders.PathSelectors;
- import springfox.documentation.builders.RequestHandlerSelectors;
- import springfox.documentation.schema.ModelRef;
- import springfox.documentation.service.*;
- import springfox.documentation.spi.DocumentationType;
- import springfox.documentation.spi.service.contexts.SecurityContext;
- import springfox.documentation.spring.web.plugins.Docket;
- import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- /**
- * @Author scott
- */
- @Configuration
- @EnableSwagger2WebMvc
- @EnableKnife4j
- @Import(BeanValidatorPluginsConfiguration.class)
- public class Swagger2Config implements WebMvcConfigurer {
- /**
- *
- * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
- *
- * @param registry
- */
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
- }
- /**
- * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
- *
- * @return Docket
- */
- @Bean(value = "defaultApi2")
- public Docket defaultApi2() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- //此包路径下的类,才生成接口文档
- .apis(RequestHandlerSelectors.basePackage("org.jeecg"))
- //加了ApiOperation注解的类,才生成接口文档
- .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
- .paths(PathSelectors.any())
- .build()
- .securitySchemes(Collections.singletonList(securityScheme()))
- .securityContexts(securityContexts());
- //.globalOperationParameters(setHeaderToken());
- }
- /***
- * oauth2配置
- * 需要增加swagger授权回调地址
- * http://localhost:8888/webjars/springfox-swagger-ui/o2c.html
- * @return
- */
- @Bean
- SecurityScheme securityScheme() {
- return new ApiKey(CommonConstant.X_ACCESS_TOKEN, CommonConstant.X_ACCESS_TOKEN, "header");
- }
- /**
- * JWT token
- * @return
- */
- private List<Parameter> setHeaderToken() {
- ParameterBuilder tokenPar = new ParameterBuilder();
- List<Parameter> pars = new ArrayList<>();
- tokenPar.name(CommonConstant.X_ACCESS_TOKEN).description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
- pars.add(tokenPar.build());
- return pars;
- }
- /**
- * api文档的详细信息函数,注意这里的注解引用的是哪个
- *
- * @return
- */
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- // //大标题
- .title("Jeecg-Boot 后台服务API接口文档")
- // 版本号
- .version("1.0")
- // .termsOfServiceUrl("NO terms of service")
- // 描述
- .description("后台API接口")
- // 作者
- .contact(new Contact("北京国炬信息技术有限公司","www.jeccg.com","jeecgos@163.com"))
- // .contact("JEECG团队")
- .license("The Apache License, Version 2.0")
- .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
- .build();
- }
- /**
- * 新增 securityContexts 保持登录状态
- */
- private List<SecurityContext> securityContexts() {
- return new ArrayList(
- Collections.singleton(SecurityContext.builder()
- .securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex("^(?!auth).*$"))
- .build())
- );
- }
- private List<SecurityReference> defaultAuth() {
- AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
- AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
- authorizationScopes[0] = authorizationScope;
- return new ArrayList(
- Collections.singleton(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes)));
- }
- }
|