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.yml 或 application.properties 文件中添加以下配置来实现:
- 在
application.yml文件中的配置:
spring:
profiles:
swagger:
enabled: false- 在
application.properties文件中的配置:
spring.profiles.swagger.enabled=false
通过将这些配置设置为 false,你可以完全禁用 spring boot 中关于 swagger ui 和 swagger 资源的自动配置和展示。
这样就可以确保这些端点和页面对外部用户不可见或无法访问。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论