Spring Security使用Lambda DSL配置流程詳解
1. 概述
在 Spring Security 5.2 中增強(qiáng)了 DSL 的功能:允許使用 Lambda 表達(dá)式來配置 HTTP security 。
需要注意的是:先前版本的配置風(fēng)格仍然是有效的且受支持的。Spring 官方額外新增 Lambda 表達(dá)式是為了提高代碼的靈活性,只是一個可選的用法。
下面讓我們看一下 Lambda 表達(dá)式配置 HTTP security 和先前的配置風(fēng)格的對比。
2. 新老配置風(fēng)格對比
Lambda風(fēng)格
@EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests(authorizeRequests -> authorizeRequests .antMatchers("/blog/**").permitAll() .anyRequest().authenticated() ) .formLogin(formLogin -> formLogin .loginPage("/login") .permitAll() ) .rememberMe(withDefaults()); } }
等效的舊配置風(fēng)格
@EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/blog/**").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .permitAll() .and() .rememberMe(); } }
對比上述兩種配置風(fēng)格,你會注意到一些關(guān)鍵的不同點(diǎn):
在 Lambda 風(fēng)格中,不再需要通過 .and()
方法來串聯(lián)配置項(xiàng)。
在調(diào)用 Lambda 方法后,HttpSecurity
對象 http
會自動返回以繼續(xù)執(zhí)行進(jìn)一步的配置。
方法 withDefaults()
可以使用 Spring Security 提供的默認(rèn)值啟用安全功能。這是 Lambda 表達(dá)式 it -> {}
的快捷方式。
3. WebFlux Security
此外,你還可以使用 Lambda 表達(dá)式來配置 WebFlux security ,配置方式與上面基本相似。
舉個例子:
@EnableWebFluxSecurity public class SecurityConfig { @Bean SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) { http .authorizeExchange(exchanges -> exchanges .pathMatchers("/blog/**").permitAll() .anyExchange().authenticated() ) .httpBasic(withDefaults()) .formLogin(formLogin -> formLogin .loginPage("/login") ); return http.build(); } }
4. Lambda DSL的目標(biāo)
Lambda DSL 被開發(fā)出來,是為了完成以下的目的:
- 自動縮進(jìn)以提高配置的可讀性。
- 不再需要使用
.and()
方法來串聯(lián)配置項(xiàng)。 - Spring Security DSL 與其他 Spring DSLs (例如 Spring Integration 和 Spring Cloud Gateway ) 擁有相似的配置風(fēng)格。
到此這篇關(guān)于Spring Security使用Lambda DSL配置流程詳解的文章就介紹到這了,更多相關(guān)Spring Security Lambda DSL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot集成ip2region實(shí)現(xiàn)ip白名單的代碼示例
ip2region v2.0 - 是一個離線IP地址定位庫和IP定位數(shù)據(jù)管理框架,10微秒級別的查詢效率,提供了眾多主流編程語言的 xdb 數(shù)據(jù)生成和查詢客戶端實(shí)現(xiàn),本文介紹了SpringBoot集成ip2region實(shí)現(xiàn)ip白名單的代碼工程,需要的朋友可以參考下2024-08-08基于maven搭建一個ssm的web項(xiàng)目的詳細(xì)圖文教程
這篇文章主要介紹了基于maven搭建一個ssm的web項(xiàng)目的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09SpringBoot中@RestControllerAdvice注解的使用
這篇文章主要介紹了SpringBoot中@RestControllerAdvice注解的使用,@RestControllerAdvice主要用精簡客戶端返回異常,它可以捕獲各種異常,需要的朋友可以參考下2024-01-01Java利用Dijkstra和Floyd分別求取圖的最短路徑
本文主要介紹了圖的最短路徑的概念,并分別利用Dijkstra算法和Floyd算法求取最短路徑,最后提供了基于鄰接矩陣和鄰接表的圖對兩種算法的Java實(shí)現(xiàn)。需要的可以參考一下2022-01-01