首页 > 编程语言 > 详细

Spring Security 如何配置多个HttpSecurity?

时间:2020-11-29 10:23:25      阅读:66      评论:0      收藏:0      [点我收藏+]
背景

在之前的文章中我们都只配置一个 HttpSecurity,如果业务比较复杂,我们也可以配置多个 HttpSecurity,实现对 WebSecurityConfigurerAdapter 的多次扩展。

Spring Security 配置多个HttpSecurity
Spring security支持配置多个HttpSecurity,实例如下:
技术分享图片

第一步:正常配置身份验证;br/>第二步:创建一个包含@Order的WebSecurityConfigurerAdapter实例,以指定应该首先考虑哪个WebSecurityConfigurerAdapter。
第三步:http.antMatcher声明此HttpSecurity将只适用于以/api/开头的url
第四步:创建另一个WebSecurityConfigurerAdapter实例。如果URL不是以/api/开头的,将使用此配置。这个配置是在ApiWebSecurityConfigurationAdapter之后考虑的,因为它在1之后有一个@Order值(@Order默认为last)。

Spring Security 配置多个HttpSecurity原理
我们知道Spring Security的核心是springSecurityFilterChain,在初始化该bean时,加载配置:
技术分享图片
调用WebSecurityConfigurerAdapter的各种实现类的init()方法:

getHttp()方法,获取到配置信息。
注意:承载多个配置的方法在这里:AbstractConfiguredSecurityBuilder.java
技术分享图片

总结

HttpSecurity使用builder模式来创建,代码看着比较优雅。配置多个 HttpSecurity 时,MultiHttpSecurityConfig 不需要继承 WebSecurityConfigurerAdapter,而是在 MultiHttpSecurityConfig 中创建静态内部类继承 WebSecurityConfigurerAdapter 即可。注意:静态内部类上添加 @Configuration 注解和 @Order 注解,@Order 注解表示该配置的优先级,数字越小优先级越大,未加 @Order 注解的配置优先级最小。

Spring Security 如何配置多个HttpSecurity?

原文:https://blog.51cto.com/15015181/2556221

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!