SpringBoot整合Swagger页面如何禁止访问swagger-ui.html

ops/2024/9/24 1:24:42/

在Spring Boot中禁止访问Swagger UI页面并在拦截器中进行拦截可以通过配置Spring Security来实现。下面是一个简单的示例,演示如何实现这一点:

在Spring Boot项目中创建一个Spring Security配置类,如下所示:

java">import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/swagger-ui.html").denyAll().antMatchers("/swagger-resources/**").permitAll() // 如果需要访问Swagger的其他资源,可以放行.and().csrf().disable();}
}

在这个配置中,我们使用HttpSecurity对象配置了访问规则。.antMatchers("/swagger-ui.html").denyAll() 表示禁止访问 swagger-ui.html 页面,而 .antMatchers("/swagger-resources/**").permitAll() 则允许访问Swagger的其他资源。

接下来,创建一个拦截器(Interceptor)类,用于拦截对 swagger-ui.html 的访问:

java">import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if (request.getRequestURI().equals("/swagger-ui.html")) {response.setStatus(HttpServletResponse.SC_FORBIDDEN);return false;  // 拦截访问}return true;  // 放行其他请求}// 可以实现 postHandle 和 afterCompletion 方法进行相应处理
}

配置这个拦截器类并使其生效:

java">import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor());}
}

这样配置后,即可通过Spring Security和拦截器实现禁止访问Swagger UI页面 swagger-ui.html

如果你想完全禁用 Swagger UI 和 Swagger 资源,你可以在 Spring Boot 项目的 application.yml 或 application.properties 文件中添加以下配置来实现: 

在 application.yml 文件中的配置:

java">spring:profiles: swagger:enabled: false

 在 application.properties 文件中的配置:

java">spring.profiles.swagger.enabled=false

通过将这些配置设置为 false,你可以完全禁用 Spring Boot 中关于 Swagger UI 和 Swagger 资源的自动配置和展示。这样就可以确保这些端点和页面对外部用户不可见或无法访问。


http://www.ppmy.cn/ops/52677.html

相关文章

discuz插件之优雅草超级列表互动增强v1.2版本更新

https://doc.youyacao.com/9/2142 v1.2更新 discuz插件之优雅草超级列表互动增强v1.2版本更新 [title]20220617 v1.2发布[/title] 增加了对php8的支持 增加了 对discuz3.5的支持

CAS原理与JUC原子类

一、CAS基本原理 1、Unsafe类 (1)概念及作用:增强Java语言操作底层资源的能力,里面的方法多为native修饰的方法(基于C实现),不建议在代码中使用,不安全。 (2&#xff…

ThreeJS-截屏下载pdf或者图片时白屏

JS-页面截图下载为pdf 关于如何下载为 pdf 在上面的这篇文章中有写,大家可以看下,下载图片代码在最下面 这时我们发现 three 部分是空白的如下: 这就多少有点尴尬了,这时我们习惯性的看下后台报错 是不是发现了惊喜,…

数据收集和数据分析

数据分析和收集是一个多步骤的过程,涉及到不同的方法和思维构型。 以下是一些常见的数据收集方法和数据分析的思维模式: ### 数据收集方法: 1. **调查问卷**: 通过设计问卷来收集定量或定性数据。(质量互变规律里面…

模板方法模式和命令模式

文章目录 模板方法模式1.引出模板模式1.豆浆制作问题2.基本介绍3.原理类图 2.豆浆制作代码实现1.类图2.SoyaMilk.java 豆浆的抽象类3.PeanutSoyaMilk.java 花生豆浆4.RedBeanSoyaMilk.java 红豆豆浆5.Client.java6.结果 3.钩子方法1.基本介绍2.代码实现1.SoyaMilk.java 添加钩子…

mysql数据库管理

查看数据库结构 Mysql是一套数据库管理系统,在每台Mysql服务器中,支持运行多个数据库每一个数据库相当一个容器 1:查看数据库结构 [rootlocalhost ~]# mysql -u root -ppwd123mysql> show databases;mysql> use mysqlmysql> show…

【Linux】进程信号_1

文章目录 八、进程信号1.信号 未完待续 八、进程信号 1.信号 信号和信号量之间没有任何关系。信号是Linux系统提供的让用户/进程给其他进程发送异步信息的一种方式。 常见信号: 当信号产生时,可选的处理方式有三种:①忽略此信号。②执行该…

STM32学习-HAL库 串口通信

学完标准库之后,本来想学习freertos的,但是看了很多教程都是移植的HAL库程序,这里再学习一些HAL库的内容,有了基础这里直接学习主要的外设。 HAL库对于串口主要有两个结构体UART_InitTypeDef和UART_HandleTypeDef,前者…