当前位置: 首页 > news >正文

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

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

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

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 的访问:

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 方法进行相应处理
}

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

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 文件中的配置:

spring:profiles: swagger:enabled: false

 在 application.properties 文件中的配置:

spring.profiles.swagger.enabled=false

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

相关文章:

  • 基于JSP的高校毕业生就业满意度调查统计系统
  • 学习周报:文献阅读+Fluent案例+Fluent相关算法学习
  • Linux DNS配置文档
  • iso27001是什么体系,有什么作用?
  • 欢度盛夏,畅享清凉——七月超市营销策略
  • 为什么人们对即将推出的 Go 1.23 迭代器感到愤怒
  • 开关阀(1):定位器与电磁阀的区别
  • HarmonyOS【ArkUI组件--TextInput】
  • AWS无服务器 应用程序开发—第八章 计算服务(AWS Lambda)
  • 一文理清OCR的前世今生
  • 【千帆AppBuilder】你有一封邮件待查收|未来的我,你好吗?欢迎体验AI应用《未来信使》
  • 查看服务器端口,如何查看服务器端口是多少并修改
  • 深度解析“科技信贷”:构建科技支行的五维模型
  • 【AI-5】Pointnet
  • 【BFS算法】广度搜索·由起点开始逐层向周围扩散求得最短路径(算法框架+题目)
  • [译]Python中的类属性与实例属性的区别
  • “大数据应用场景”之隔壁老王(连载四)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Java 内存分配及垃圾回收机制初探
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Median of Two Sorted Arrays
  • nginx 负载服务器优化
  • v-if和v-for连用出现的问题
  • yii2中session跨域名的问题
  • 力扣(LeetCode)56
  • 判断客户端类型,Android,iOS,PC
  • 入口文件开始,分析Vue源码实现
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 小程序button引导用户授权
  • 新手搭建网站的主要流程
  • 交换综合实验一
  • 如何正确理解,内页权重高于首页?
  • ​configparser --- 配置文件解析器​
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (12)Hive调优——count distinct去重优化
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (七)Flink Watermark
  • (十六)一篇文章学会Java的常用API
  • (一一四)第九章编程练习
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)c++ std::pair 与 std::make
  • (转)mysql使用Navicat 导出和导入数据库
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ****三次握手和四次挥手
  • .net 7 上传文件踩坑
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Standard 的管理策略
  • .net web项目 调用webService
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken