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

Spring Boot 3 + Spring Security + Knife4j 无法访问 Swagger 文档的问题及解决方案


背景介绍

在使用Spring Boot 3框架结合Spring Security进行项目开发时,我们可能会遇到集成Knife4j后Swagger文档无法正常访问的情况。本文将探讨可能的原因以及相应的解决办法。

常见问题

问题描述

当配置好Spring Security后尝试通过Knife4j访问API文档页面时,可能会出现如下情况:

  • 访问Swagger UI页面时返回403 Forbidden错误。
  • Swagger UI页面加载不完全或者完全不显示。

解决方案

步骤一:检查安全配置

确保你的Spring Security配置允许对Swagger资源的访问。可以通过添加特定的规则来排除Swagger相关的路径,例如:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            // 不需要校验的接口
            .requestMatchers("/api/auth/**").permitAll()
            .requestMatchers("/doc.html","/webjars/**", "/swagger-resources/**", "/v3/**").permitAll()
            .anyRequest().authenticated(); // 其他所有请求需要认证
        // ...其他配置...
    }
}

步骤二:要在 yml 文件中放行

spring:
  security:
    web:
      include-filter-by-default: false # 默认情况下不包含任何过滤器
      exclude-filter:
        - /doc.html  # 这些是 swagger 文档需要放行的路径
        - /webjars/**
        - /v3/**
        - /swagger-resources/**


# 如果使用的是Spring Security的自定义配置类,可以在下面添加bean定义
# 或者直接在Java配置类中配置


http://www.kler.cn/a/373962.html

相关文章:

  • 2.WebSocket进阶: 深入探究实时通信的最佳实践与优化技巧
  • 记录一下方便的条件编译
  • 深入解析:Python中的特征工程——从入门到精通
  • 4. 日志系统实现
  • 【flask】 前后端通信方式 原生js的ajax,总结
  • 蓝桥杯普及题
  • 如何抓住鸿蒙生态崛起的机遇,解决开发挑战,创造更好的应用体验
  • Linux笔记--基础入门
  • aws 部署测试环境服务+ip域名绑定
  • 全国计算机等级考试二级
  • 【Fargo】17:vs工程转qt构建:QT6 不支持32bit转向qt5.15.2
  • MYSQL--完整性约束
  • AR基础知识:SLAM同时定位和构图
  • 计算机网络:网络层 —— 开放最短路径优先 OSPF
  • HTML入门教程23:HTML脚本
  • 深度了解flink(九) JobManager(3) HA分析
  • 智慧养老/社区养老/家政预约/老年护理 小程序
  • Certimate - 免费开源的 SSL 证书托管、自动续签工具,开发者维护 90 天免费证书的救星
  • 构建校园社团信息管理平台:Spring Boot技术的核心要点
  • Go 语言解析 yaml 文件的方法
  • 【idea】idea更新遇到的坑
  • 多用户商城系统的架构与实现
  • react-路由
  • YOLOv6-4.0部分代码阅读笔记-config.py
  • 【C++】深究类型转换
  • LVGL添加事件和删除事件