Lambda DSL概述
Spring Security 5.2 对 Lambda DSL 语法的增强,允许使用lambda配置HttpSecurity
、ServerHttpSecurity
重要提醒,之前的配置方法仍然有效。lambda的添加旨在提供更大的灵活性,但是用法是可选的。让我们看一下HttpSecurity
的lambda配置与以前的配置样式相比。
HttpSecurity
使用lambdas配置
@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());
}
}
等效配置,不使用lambda
@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();
}
}
默认情况
Lambda DSL配置技巧
比较上面的两个样本时,您会注意到一些关键差异:
在Lambda DSL中,无需使用.and()
方法链接配置选项。HttpSecurity
调用Lambda
方法之后实例自动返回进行进一步的配置。
Spring Security WebFlux
@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();
}
}
总结
Spring SecurityLambda DSL 自动缩进使配置更具可读性、不需要使用链接配置选项.and()。Spring Security DSL
与其他Spring DSL
(例如Spring Integration和Spring Cloud Gateway)具有类似的配置方法。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦