当前位置: 代码网 > it编程>编程语言>Java > SpringBoot整合Swagger页面禁止访问swagger-ui.html方式

SpringBoot整合Swagger页面禁止访问swagger-ui.html方式

2025年02月13日 Java 我要评论
springboot整合swagger页面禁止访问swagger-ui.html在spring boot中禁止访问swagger ui页面并在拦截器中进行拦截可以通过配置spring security

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 {

    @override
    protected 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 {

    @override
    public 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 {

    @override
    public void addinterceptors(interceptorregistry registry) {
        registry.addinterceptor(new myinterceptor());
    }
}

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

如果你想完全禁用swagger ui和swagger资源

你可以在 spring boot 项目的 application.ymlapplication.properties 文件中添加以下配置来实现:

  • application.yml 文件中的配置:
spring:
  profiles: 
  swagger:
    enabled: false
  • application.properties 文件中的配置:
spring.profiles.swagger.enabled=false

通过将这些配置设置为 false,你可以完全禁用 spring boot 中关于 swagger ui 和 swagger 资源的自动配置和展示。

这样就可以确保这些端点和页面对外部用户不可见或无法访问。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com