Spring Boot security 默认拦截静态资源的解决方法

 更新时间:2023年03月16日 16:03:03   作者:Hongyuyang296  
这篇文章主要介绍了Spring Boot security 默认拦截静态资源,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Spring Boot security 会默认登陆之前拦截全部css, js,img等动态资源,导致我们的公开主页在登陆之前很丑陋

像这样:

网上很多解决办法都过时了比如还在使用WebSecurityConfigurerAdapte,antMatchers

public class SecurityConfigurer extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(WebSecurity web) throws Exception {
    web
        .ignoring()
        .antMatchers("/resources/**");
}
}

WebSecurityConfigurerAdapter和antMatchers已经被Spring Security 6.0弃用,现最新的是使用securityFilterChain class 如下图:

public class WebSecurityConfig {
 
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((requests) -> requests
                .requestMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin((form) -> form
                .loginPage("/login")
                .permitAll()
            )
            .logout((logout) -> logout.permitAll());
 
        return http.build();
    }
}

这里只需要添加.requestMatchers("/resources/**").permitAll()就可以允许访问resources文件下资源

注意.antMatchers 已经弃用,用.requestMatchers代替

 public class WebSecurityConfig {
 
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((requests) -> requests
                .requestMatchers("/", "/home").permitAll()
                 //放行静态资源
                .requestMatchers("/resources/**").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin((form) -> form
                .loginPage("/login")
                .permitAll()
            )
            .logout((logout) -> logout.permitAll());
 
        return http.build();
    }
}

但是我看网上没有人解释需要注意这里“/resources/**"并不一定万能,具体链接得根据你插入css/js的路径来比如这里使用assets/**

那么你securityFilterChain class里就得是.requestMatchers("/assets/**").permitAll()

之后再运行,成功!

到此这篇关于Spring Boot security 默认拦截静态资源的文章就介绍到这了,更多相关Spring Boot security拦截静态资源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何在Maven项目中运行JUnit5测试用例实现

    如何在Maven项目中运行JUnit5测试用例实现

    这篇文章主要介绍了如何在Maven项目中运行JUnit5测试用例实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • SpringBoot错误处理流程深入详解

    SpringBoot错误处理流程深入详解

    在项目开发中出现异常时很平常不过的事情,我们处理异常也有很多种方式。本文将详细为大家讲解SpringBoot实现异常处理几种方法,感兴趣的可以学习一下
    2022-10-10
  • Java集合ArrayList、LinkedList、HashMap、HashSet最大容量

    Java集合ArrayList、LinkedList、HashMap、HashSet最大容量

    在开发中我们使用比较多的集合就是List、Set和Map了,并且我们也知道大部分用的基本上都是ArrayList、LinkedList、HashMap、HashSet或者TreeSet这几个集合,你知道他们的最大容量,感兴趣的可以了解一下
    2023-12-12
  • 新手学习Java对Redis简单操作

    新手学习Java对Redis简单操作

    这篇文章主要介绍了新手学习Java对Redis简单操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java基于循环递归回溯实现八皇后问题算法示例

    Java基于循环递归回溯实现八皇后问题算法示例

    这篇文章主要介绍了Java基于循环递归回溯实现八皇后问题算法,结合具体实例形式分析了java的遍历、递归、回溯等算法实现八皇后问题的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • Java中的多线程一定就快吗?

    Java中的多线程一定就快吗?

    这篇文章主要介绍了Java 多线程的相关资料,帮助大家是否选择开启多线程,感兴趣的朋友可以了解下
    2020-09-09
  • 两种Spring服务关闭时对象销毁的实现方法

    两种Spring服务关闭时对象销毁的实现方法

    spring提供了两种方式用于实现对象销毁时去执行的操作,本文主要为大家详细介绍了这两种方式的具体实现,文中的示例代码讲解详细,希望对大家有所帮助
    2023-04-04
  • 利用Java发送邮件的实现代码

    利用Java发送邮件的实现代码

    这篇文章给大家分享了如何利用Java发送邮件,文章通过实例代码介绍的很详细,有需要的可以参考借鉴。
    2016-08-08
  • SpringBoot如何使用TestEntityManager进行JPA集成测试

    SpringBoot如何使用TestEntityManager进行JPA集成测试

    TestEntityManager是Spring Framework提供的一个测试框架,它可以帮助我们进行 JPA 集成测试,在本文中,我们将介绍如何使用 TestEntityManager 进行 JPA 集成测试,感兴趣的跟着小编一起来学习吧
    2023-06-06
  • 关于JAVA经典算法40题(超实用版)

    关于JAVA经典算法40题(超实用版)

    本篇文章小编为大家介绍一下,关于JAVA经典算法40题(超实用版),有需要的朋友可以参考一下
    2013-04-04

最新评论