Spring Security使用Lambda DSL配置流程詳解
1. 概述
在 Spring Security 5.2 中增強(qiáng)了 DSL 的功能:允許使用 Lambda 表達(dá)式來配置 HTTP security 。
需要注意的是:先前版本的配置風(fēng)格仍然是有效的且受支持的。Spring 官方額外新增 Lambda 表達(dá)式是為了提高代碼的靈活性,只是一個(gè)可選的用法。
下面讓我們看一下 Lambda 表達(dá)式配置 HTTP security 和先前的配置風(fēng)格的對(duì)比。
2. 新老配置風(fēng)格對(duì)比
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();
}
}
對(duì)比上述兩種配置風(fēng)格,你會(huì)注意到一些關(guān)鍵的不同點(diǎn):
在 Lambda 風(fēng)格中,不再需要通過 .and() 方法來串聯(lián)配置項(xiàng)。
在調(diào)用 Lambda 方法后,HttpSecurity 對(duì)象 http 會(huì)自動(dòng)返回以繼續(xù)執(zhí)行進(jìn)一步的配置。
方法 withDefaults() 可以使用 Spring Security 提供的默認(rèn)值啟用安全功能。這是 Lambda 表達(dá)式 it -> {} 的快捷方式。
3. WebFlux Security
此外,你還可以使用 Lambda 表達(dá)式來配置 WebFlux security ,配置方式與上面基本相似。
舉個(gè)例子:
@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ā)出來,是為了完成以下的目的:
- 自動(dòng)縮進(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql數(shù)據(jù)庫忘記密碼時(shí)如何修改
本文主要介紹了mysql數(shù)據(jù)庫忘記密碼時(shí)如何修改的步驟方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
RxJava+Retrofit+Mvp實(shí)現(xiàn)購物車
這篇文章主要為大家詳細(xì)介紹了RxJava+Retrofit+Mvp實(shí)現(xiàn)購物車功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
MyBatis使用<foreach>標(biāo)簽報(bào)錯(cuò)問題及解決
這篇文章主要介紹了MyBatis使用<foreach>標(biāo)簽報(bào)錯(cuò)問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
SpringMVC中Model和ModelAndView的EL表達(dá)式取值方法
下面小編就為大家分享一篇SpringMVC中Model和ModelAndView的EL表達(dá)式取值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
string boot 與 自定義interceptor的實(shí)例講解
下面小編就為大家分享一篇string boot 與 自定義interceptor的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
鴻蒙HarmonyOS App開發(fā)造輪子之自定義圓形圖片組件的實(shí)例代碼
這篇文章主要介紹了鴻蒙HarmonyOS App開發(fā)造輪子之自定義圓形圖片組件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01

