【swagger】springboot项目中配置Swagger的两种方式以及swagger权限验证、安全控制

本文主要是介绍【swagger】springboot项目中配置Swagger的两种方式以及swagger权限验证、安全控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

配置Swagger的两种方式以及swagger权限验证、安全控制

  • 前言
  • 一、springboot配置Swagger的两种方式
    • 方式1:使用配置文件来配置Swagger设置
    • 方式2:创建Java类来配置Swagger设置
  • 二、swagger权限验证、安全控制
    • 1.环境权限配置
    • 2.账户权限配置

前言

swagger是什么?
    Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

    Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。

Swagger 的优势

  • 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。
  • 提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。

一、springboot配置Swagger的两种方式

方式1:使用配置文件来配置Swagger设置

1.在pom.xml文件添加依赖

        <dependency><groupId>com.spring4all</groupId><artifactId>swagger-spring-boot-starter</artifactId><version>1.8.0.RELEASE</version></dependency>

2.在配置文件application.yml添加配置

swagger:base-package: 'com.itfuture.controller'base-path: '/**'title: '注解方式的Swagger'description: '这是注解方式的Swagger'version: '2.0'license-url: 'https://www.apache.org/licenses/LICENSE-2.0.html'license: 'The Apache License'contact:name: 'itfuture'url: 'https:www.baidu.com'email: '******@qq.com'

3.在启动类添加注解@EnableSwagger2Doc

@EnableSwagger2Doc
@SpringBootApplication
public class EApplication {public static void main(String[] args) {Object o=new Object();SpringApplication.run(EApplication.class, args);}}

4.如果报这个异常

在这里插入图片描述
5.在pom.xml添加如下依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

方式2:创建Java类来配置Swagger设置

1.在pom.xml添加依赖

        <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency>
<!--        导入swagger-ui依赖--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency>

2.创建Swagger的Java配置类(可以在配置类添加@EnableSwagger2注解,也可以在启动器类上加这个注解!)

/**swagger2配置* @author: wxh* @version:v1.0* @date: 2022/09/22 20:04*/
@Configuration
@EnableSwagger2
public class Swagger2Config {@Beanpublic Docket webApiConfig(){//添加head参数startArrayList<Parameter> pars = new ArrayList<>();ParameterBuilder tokenPar = new ParameterBuilder();tokenPar.name("userId").description("用户Id").defaultValue("1").modelRef(new ModelRef("string")).parameterType("header").required(false).build();pars.add(tokenPar.build());ParameterBuilder tmpPar = new ParameterBuilder();tmpPar.name("userTempId").description("临时用户ID").defaultValue("1").modelRef(new ModelRef("string")).parameterType("header").required(false).build();pars.add(tmpPar.build());//添加head参数endreturn new Docket(DocumentationType.SWAGGER_2).groupName("webApi").apiInfo(webApiInfo()).select()//可以测试请求头中:输入token.apis(RequestHandlerSelectors.basePackage("com.gg.zhschool.controller"))//.apis(RequestHandlerSelectors.withClassAnnotation(ApiOperation.class))//过滤掉admin路径下的所有页面//.paths(Predicates.and(PathSelectors.regex("/sms/.*")))//过滤掉所有error或error.*页面//.paths(Predicates.not(PathSelectors.regex("/error.*"))).build().globalOperationParameters(pars);}private ApiInfo webApiInfo(){return new ApiInfoBuilder().title("网站-API文档").description("本文档描述了网站微服务接口定义").version("1.0").contact(new Contact("itfuture","http://www.baidu.com","itfuture03@163.com")).build();}private ApiInfo adminApiInfo(){return new ApiInfoBuilder().title("后台管理系统-API文档").description("本文档描述了后台管理系统微服务接口定义").version("1.0").contact(new Contact("atguigu", "http://atguigu.com", "512111559@qq.com")).build();}}

3.在启动类添加注解@EnableSwagger2(如果在配置类已经加过则跳过此步)

@SpringBootApplication
@EnableSwagger2
public class ZhSchoolApplication {public static void main(String[] args) {SpringApplication.run(ZhSchoolApplication.class, args);}}

然后启动项目,在浏览器输入:http://localhost:8080/swagger-ui.html

二、swagger权限验证、安全控制

当我们使用swagger,进行文档管理的时候,担心文档暴露(暴露接口)不安全时。

可采用两种方式

1.环境权限配置

对swagger文档配置只在测试环境可访问,生产环境不可访问。

在这里插入图片描述

 @Profile({"dev","test"})

如以上配置,则只有在dev以及test环境有效,在生产环境不可访问。

2.账户权限配置

在1.9.0版本时,针对Swagger的资源接口,SwaggerBootstrapUi提供了简单的Basic认证功能。
如果是springboot项目可在yml文件配置

(1)在yml文件中配置

swagger:production: falsebasic:enable: trueusername: eSwaggerpassword: 123456

以上分别为启用,并且用户名为eSwagger.密码为123456。

切记swagger.production 不可设置为true,否则将屏蔽所有资源

(2)在swaggerConfig中添加注解

@EnableSwaggerBootstrapUI

在这里插入图片描述

结果就是此时访问需要通过用户密码才可进行访问!

在这里插入图片描述
此时只能通过配置的正确用户名和密码来登录!否则无法进入!

这篇关于【swagger】springboot项目中配置Swagger的两种方式以及swagger权限验证、安全控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/686069

相关文章

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示