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


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

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

像这样:

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

publicclassSecurityConfigurerextendsWebSecurityConfigurerAdapter{@Overridepublicvoidconfigure(WebSecurityweb)throwsException{web.ignoring().antMatchers("/resources/**");}}

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

publicclassWebSecurityConfig{@BeanpublicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{http.authorizeHttpRequests((requests)->requests.requestMatchers("/","/home").permitAll().anyRequest().authenticated()).formLogin((form)->form.loginPage("/login").permitAll()).logout((logout)->logout.permitAll());returnhttp.build();}}

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

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

publicclassWebSecurityConfig{@BeanpublicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{http.authorizeHttpRequests((requests)->requests.requestMatchers("/","/home").permitAll()//放行静态资源.requestMatchers("/resources/**").permitAll().anyRequest().authenticated()).formLogin((form)->form.loginPage("/login").permitAll()).logout((logout)->logout.permitAll());returnhttp.build();}}

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

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

之后再运行,成功!

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


上一篇:Springboot之怎么统计代码执行耗时时间

下一篇:Mysql怎么指定某个字符串字段前面几位排序查询


Copyright © 2002-2019 测速网 https://www.inhv.cn/ 皖ICP备2023010105号 城市 地区 街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
热门搜索