美文网首页
SpringSecurity-静态资源的访问

SpringSecurity-静态资源的访问

作者: 矢量演说 | 来源:发表于2020-05-13 23:32 被阅读0次
    • Spring Security把我的静态资源都拦截了

    参考了一些世纪美文:
    这篇文章我看得很早但没有照做,我恨
    Spring Security 静态资源访问
    spring security访问静态资源文件出现404

    http.authorizeRequests()
                    //允许所有用户访问"/","/jquery/**","/semantic/**","/css/**","/js/**","/images/**"
                    .antMatchers("/",
                            "/jquery/**",
                            "/semantic/**",
                            "/css/**",
                            "/js/**",
                            "/images/**",
                            "/fonts/**",
                            "/**/favicon.ico",
                            "/**").permitAll()
                    //其他请求需要登录认证
                    .anyRequest().authenticated()
    

    如果不加上这段代码访问静态文件都成302,访问静态文件全都跳转到login去了。
    但新的问题是加上这段代码后访问静态文件又变成404了,检查了几十遍路径没有错,然后在static文件夹下随便新建了一个txt文件去访问,也是404,最后解决办法看下面代码
    作者:鑫鑫哥哥丨
    链接:https://www.jianshu.com/p/c698667ee9a0
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurationSupport {
    
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/login").setViewName("login");
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        }
    }
    

    需要在后面重新映射一下静态资源路径,自己觉得原因可能是Spring Boot默认的静态资源路径不知道被我怎么搞的失效了,怀疑和Spring Security有关,
    而且在html文件中的引用方式也要改变,看代码
    作者:鑫鑫哥哥丨
    链接:https://www.jianshu.com/p/c698667ee9a0
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    <link rel="stylesheet" type="text/css" th:href="@{/static/semantic/dist/semantic.min.css}">
        <script type="text/javascript" th:src="@{/static/js/jquery.min.js}"></script>
        <script type="text/javascript" th:src="@{/static/semantic/dist/semantic.min.js}"></script>
    

    一旦改了CSS和js的引入,就需要重启IDEA才能生效。下面这篇文章也详细地讲解了上面那些设置的原理。
    (简单详细解决)SpringBoot 前台页面get不到js,css文件 net::ERR_ABORTED 404

    在springboot自身带有的那个(项目名+Application)类中继承WebMvcConfigurationSupport重写里面的addResourceHandlers方法
    在这里可以理解为配置在项目启动时扫描static下面的所有文件,也就是告诉springboot在启动的时候带上他们全部一起跑。
    最强解决方案,js,css文件导入项目后先重新启动软件,
    保证编码格式正确js引入加入type=“text/javascript”
    css引入加入rel=“stylesheet”
    重启idea软件
    每次导入新的css和js都要重新启动。
    ————————————————
    版权声明:本文为CSDN博主「一个有梦想的咸鱼。」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/YiQieFuCong/article/details/85009401

    接下来这些并没有帮助,但还是存一下
    在static下新建一个文件夹,然后在上述方法中指定跳过拦截的文件路径
    这个的写法很有意思,根据文件类型进行过滤(虽然没效果)
    Springsecurity引入静态资源 css,js,图片被屏蔽等问题解决办法

    public void configure(WebSecurity web) throws Exception {
        // 忽略URL
        web.ignoring().antMatchers("/**/*.js", "/lang/*.json", "/**/*.css", "/**/*.js", "/**/*.map", "/**/*.html",
                "/**/*.png");
    }
    
    • 我的程序总是说我少这个静态资源

    然而加了也没什么效果……姑且放一下下载链接
    blueimp-md5下载

    • /static/treetable-lay/treetable.css找不到

    可我明明引入了啊……尚未解决

    • 版本问题(没有用到)

    看b站教程的时候看到这条弹幕,但其实没有用到,而且为什么thymeleaf和springsecurity有关系啊。
    “特意回来告诉大家,高版本的springboot需要使用thymeleaf-extras-springsecurity5”

    <dependency>
                <groupId>org.thymeleaf.extras</groupId>
                <artifactId>thymeleaf-extras-springsecurity5</artifactId>
     </dependency>
    

    相关文章

      网友评论

          本文标题:SpringSecurity-静态资源的访问

          本文链接:https://www.haomeiwen.com/subject/anuanhtx.html