背景介绍

在使用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配置类中配置

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部