【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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7