当前位置:   article > 正文

springboot访问静态资源与整合swagger-bootstrap-ui的doc.html访问冲突问题(SpringSecurity)_doc.html swagger

doc.html swagger

springboot访问静态资源与整合swagger-bootstrap-ui的doc.html访问冲突问题(SpringSecurity

项目场景:

毕业设计完成一个springboot+vue的前后端分离项目,整合了SpringSecurity安全框架和swagger2,并使用swagger-bootstrap-ui第三方接口文档ui。

关于spring security整合swagger2使用swagger-bootstrap-ui(在放行了静态资源后放行doc.html失败的问题)


问题描述

由于需要实现图片的上传下载功能,需要spring security放行静态资源,此前swagger-bootstrap-ui文档是可以放行并访问成功的,放行静态资源后doc.html就访问失败了。

放行静态资源前,此时doc.html可以正常访问。

/**
     * 放行
     * @param web
     * @throws Exception
     */
    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers(
                "/login",
                "/logout",
                "/css/xx",
                "/js/xx",
                "/index.html",
                "favicon.ico",
                "/doc.html",
                "/webjars/**",
                "/swagger-resources/**",
                "/v2/api-docs/**",
                "/captcha",
                "/user/register",
                "/ws/**"
        );
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

此时需要实现图片上传下载功能,随后放行了静态资源,添加了一个配置文件 WebMvcConfig.java

//添加如下三个放行路径
                "/image/uploadImage""/static/**",
                "/static/image"

  • 1
  • 2
  • 3
  • 4
  • 5
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    /**
     * 配置静态资源
     * @param registry
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        super.addResourceHandlers(registry);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

随后发现swagger-bootstrap-ui接口文档http:localhost:8081/doc.html无法正常访问。
在这里插入图片描述


原因分析:

经过检查发现去除掉WebMvcConfig.java这个配置文件后访问又恢复正常。冲突应该出现在这里。应该是在静态资源配置后默认将http:localhost:8081/doc.html视为了静态资源访问,但又寻找未果。


解决方案:

在配置文件中添加关于doc.html的配置以求与静态资源访问区分开

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    /**
     * 配置静态资源
     * @param registry
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
   //addResoureHandler:指的是对外暴露的访问路径   addResourceLocations:指的是内部文件放置的目录     
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath*:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

然后接口文档就可以正常访问了
在这里插入图片描述

如果还遇到奇怪的问题可以去knife4j官方文档看一下
https://doc.xiaominfo.com/

在这里插入图片描述

还在摸索中,欢迎各位朋友交流,大佬们批评指正。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/83587
推荐阅读
相关标签
  

闽ICP备14008679号