swagger设置使用及自定义安全方案securitySchemes

打印 上一主题 下一主题

主题 969|帖子 969|积分 2922

1.导入swagger依赖

这里使用的是springfox-boot-starter,同时导入knife4j插件(不导入也行,导入可以方便接口调试)。
  1.         <dependency>
  2.             <groupId>io.springfox</groupId>
  3.             <artifactId>springfox-boot-starter</artifactId>
  4.             <version>3.0.0</version>
  5.         </dependency>
  6.         
  7.         <dependency>
  8.             <groupId>com.github.xiaoymin</groupId>
  9.             <artifactId>knife4j-spring-boot-starter</artifactId>
  10.             <version>3.0.3</version>
  11.         </dependency>
复制代码
接下来编写swagger设置类

  1. @Configuration
  2. @EnableOpenApi
  3. @EnableKnife4j
  4. public class Knife4jConfig {
  5.     @Bean
  6.     public Docket defaultApi2() {
  7.         return new Docket(DocumentationType.OAS_30)
  8.                 .apiInfo(apiInfo())
  9.                 //分组名称
  10. //                .groupName("2.X版本")
  11.                 .select()
  12.                 //这里指定Controller扫描包路径
  13.                 .apis(RequestHandlerSelectors.basePackage(""))
  14.                 .paths(PathSelectors.any())
  15.                 .build()
  16.                 .securitySchemes(securitySchemes())
  17.                 .securityContexts(securityContexts());
  18.     }
  19.     private ApiInfo apiInfo() {
  20.         return new ApiInfoBuilder()
  21.                 .title("项目名称")
  22.                 .version("1.0")
  23.                 .build();
  24.     }
  25.     private List<SecurityScheme> securitySchemes() {
  26.         List<SecurityScheme> securitySchemeList = new ArrayList<>();
  27.         securitySchemeList.add(new HttpAuthenticationScheme("Authorization",
  28.                 "JWT授权(数据将在请求头中进行传递)直接在下面框中输入token",
  29.                 "http",
  30.                 "Bearer",
  31.                 "JWT",
  32.                 new ArrayList<>()
  33.         ));
  34.         return securitySchemeList;
  35.     }
  36.     //过滤不需要进行验证的页面
  37.     private List<SecurityContext> securityContexts() {
  38.         List<SecurityContext> securityContexts = new ArrayList<>();
  39.         securityContexts.add(
  40.                 SecurityContext.builder()
  41.                         .securityReferences(defaultAuth())
  42.                         //这些接口不用提供token即可访问。
  43.                         .forPaths(PathSelectors.regex("^(?!/employee/login).*$"))
  44.                         .forPaths(PathSelectors.regex("^(?!/identifyImageBase64).*$"))
  45.                         .build());
  46.         return securityContexts;
  47.     }
  48.     //全局的token配置
  49.     private List<SecurityReference> defaultAuth() {
  50.         List<SecurityReference> securityReferences = new ArrayList<>();
  51.         securityReferences.add(new SecurityReference("Authorization", new AuthorizationScope[0]));
  52.         return securityReferences;
  53.     }
  54. }
复制代码
在swagger文档中效果如下


在/swagger-ui/index.html#/中可以全局设置token,并主动过滤不需要token的接口

在knife4j文档中也可以实现设置全局token


结束。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表