返回顶部
首页 > 资讯 > 精选 >SpringBoot security默认拦截静态资源问题怎么解决
  • 259
分享到

SpringBoot security默认拦截静态资源问题怎么解决

2023-07-05 13:07:06 259人浏览 薄情痞子
摘要

这篇文章主要讲解了“SpringBoot security默认拦截静态资源问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springBoot security

这篇文章主要讲解了“SpringBoot security默认拦截静态资源问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springBoot security默认拦截静态资源问题怎么解决”吧!

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

像这样:

SpringBoot security默认拦截静态资源问题怎么解决

网上很多解决办法都过时了比如还在使用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()

SpringBoot security默认拦截静态资源问题怎么解决

SpringBoot security默认拦截静态资源问题怎么解决

之后再运行,成功!

SpringBoot security默认拦截静态资源问题怎么解决

感谢各位的阅读,以上就是“SpringBoot security默认拦截静态资源问题怎么解决”的内容了,经过本文的学习后,相信大家对SpringBoot security默认拦截静态资源问题怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: SpringBoot security默认拦截静态资源问题怎么解决

本文链接: https://lsjlt.com/news/351887.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作