前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Security 新特性 Lambda DSL 使用

Spring Security 新特性 Lambda DSL 使用

作者头像
冷冷
发布2019-11-27 10:46:34
8500
发布2019-11-27 10:46:34
举报
文章被收录于专栏:冷冷冷冷

Lambda DSL概述

Spring Security 5.2 对 Lambda DSL 语法的增强,允许使用lambda配置HttpSecurityServerHttpSecurity

重要提醒,之前的配置方法仍然有效。lambda的添加旨在提供更大的灵活性,但是用法是可选的。让我们看一下HttpSecurity的lambda配置与以前的配置样式相比。

HttpSecurity

使用lambdas配置

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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)具有类似的配置方法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lambda DSL概述
  • HttpSecurity
    • 使用lambdas配置
      • 等效配置,不使用lambda
        • 默认情况
        • Spring Security WebFlux
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档