java - 根据角色禁用 swagger-ui

标签 java spring spring-boot swagger-ui

我知道可以在 spring-boot 应用程序上使用 @Profile 完全禁用 swagger-ui,但我仍然需要某些特权用户能够访问 swagger-ui 且未完全禁用。

有没有办法实现这一点。

更新:

目前我正在使用拦截器方法,但我不想要这种方法。

    @Override
public boolean preHandle(HttpServletRequest request,
        HttpServletResponse response, Object handler) throws Exception {       
    if(request.getRequestURI().contains("swagger") && 
            !request.isUserInRole("XX_YY_ZZ")) {                   

        response.sendError(403, "You are not authorized to access ");            }  
    return super.preHandle(request, response, handler);
}

最佳答案

如果没有您使用的版本或代码,很难提供帮助。但我会尽力而为。

当您使用 swagger-ui 时,您有一个公开的 URL 来访问您的文档(通常为 /swagger-ui.html)。 您正在使用spring-boot,并谈论用户限制,所以我假设您可以使用spring-boot-starter-security。 使用 spring-boot-starter-security,您可以轻松配置要保护的 URL(例如,关于用户角色)。

这是一个有效的示例配置:

@Configuration
@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // the rest of your configuration
        http.authorizeRequests().mvcMatchers("/swagger-ui.html").hasRole("DEVELOPER")
}

您可以保护 swagger URL,就像使用 Controller 公开的任何 URL 一样。

了解更多信息:

我可以在以下方面提供更多帮助:

  • 安全配置摘录
  • 您正在使用的 Spring-boot 版本

关于java - 根据角色禁用 swagger-ui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59503245/

相关文章:

java - Kubernetes Java API 不使用提供的用户名密码

Docker 中的 Java GUI Maven 项目出现 X11 错误

java - 使用 Mockito 的 doThrow 方法时不会抛出异常

java - Spring OAuth2 : How do I allow password grant type using java configuration?

java - 如何设置 Hibernate 以读取/写入不同的数据源?

java - 如何让用户使用 vaadin 文件下载器下载 zip 文件

spring - JHipster和mongodb : Error creating bean with name 'mongobee'

java - JSP EL/Apache Tiles --- 返回对象具有组合键

java.lang.NoClassDefFoundError : org/bouncycaSTLe/asn1/ASN1Encodable 错误

java - spring boot 2 embed tomcat 9.0.26 无法加载jks文件流关闭