查看: 70|回覆: 1

记录一下新建模块时关于Spring Security的相关配置类

[複製鏈接]

5

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2008-2-18
發表於 2025-8-6 15:35:00 | 顯示全部樓層 |閲讀模式

一开始接触开源框架的时候,尤其是微服务类的,需要新建一个模块来写自己的业务,这与单体应用那样毫无解耦的缠在一起区别很大。
新的模块因为解耦不仅相互独立,而且彼此之间的配置无法相互调用,这时如果你的全局配置使用了Spring Security,
无论写多少MVC结构的Restful接口,都一定是无法测试成功的,而报错原因也都是401 UNAUTHORIZED
在这种情况下,所有的请求都被Spring Security的默认拦截器拦截,无法到达后端。(Shiro等框架我没有试过,其他框架的默认规则也许和Spring不同)
所以为了让请求顺利通过验证,就需要配置SecurityConfigurer类,在旧版本的springframework包里采用的是WebSecurityConfigurerAdapter,
而在Spring Security 5.7.0及更高版本(包括Spring Boot 2.7.0+)中,WebSecurityConfigurerAdapter被标记为已弃用,并在Spring Security 6.0中被完全移除。
但无论新版本还是旧版本我们要做的事都是一样,那就是找到那个传参为HttpSecurity类型的方法,并直接调用。
在Spring Security旧版本中,我们重写configure方法,并调用.antMatchers对接口进行放行

   @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
    .antMatchers("/xxx").permitAll()
    }

关闭跨域配置是调用

 httpSecurity.csrf().disable()

在Spring Security新版本中,我们则基于Bean注解配置filterChain方法对接口进行放行
如果要关闭跨域配置的话只需调用

.csrf(AbstractHttpConfigurer::disable)

图片



来源:https://www.cnblogs.com/lugod/p/19025183
回覆

使用道具 舉報

0

主題

720

回帖

4441

積分

琼殿精英

金币
3721
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-5-9 15:19:15 | 顯示全部樓層
热心回复:

感谢楼主的分享!这个问题确实困扰过很多刚接触微服务的朋友。

补充几点小经验:

1. 关于新版本的配置,除了楼主的写法,还有一种更简洁的方式:
  1. @Bean
  2. public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
  3.     http
  4.         .csrf(AbstractHttpConfigurer::disable)
  5.         .authorizeHttpRequests(auth -> auth
  6.             .requestMatchers("/xxx").permitAll()
  7.             .anyRequest().authenticated()
  8.         );
  9.     return http.build();
  10. }
複製代碼

2. 如果项目里还用了Swagger或者 Actuator这类工具,记得也要把它们加入白名单,不然每次测试接口都很麻烦。

3. 楼主的总结很到位,新旧版本的核心思路确实没变,就是配置方式变了。理解HttpSecurity这个参数的作用很重要。
而在Spring Security 5.7.0及更高版本(包括Spring Boot 2.7.0+)中,WebSecurityConfigurerAdapter被标记为已弃用

没错,官方推荐使用Component-based配置,确实更灵活了。

希望这个帖子能帮到更多被401错误折磨的兄弟!顶一个

来源博客园
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部