Spring Security 如何使用Lambda DSL保护我的H2控制台?

xa9qqrwz  于 2022-12-04  发布在  Spring
关注(0)|答案(1)|浏览(188)

Spring似乎建议将using Lambda DSL用于安全配置。
不使用lambdas,我知道如何保护我的h2-console。

public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/h2-console/**").authenticated()
        .anyRequest().authenticated()
        .and().formLogin()
        .and().csrf().ignoringAntMatchers("/h2-console/**")
        .and().headers().frameOptions().sameOrigin();
    return http.build();

按照教程的开头,我尝试了以下代码

http
        .authorizeRequests((authz) -> authz
            .antMatchers("/h2-console/**").authenticated()
            .anyRequest().authenticated()
        )
        .formLogin()
        .csrf().ignoringAntMatchers("/h2-console/**")
        .headers().frameOptions().sameOrigin();

并得到此错误
未定义类型FormLoginConfigurer的方法csrf()
我还尝试了许多其他组合,例如

http
        .authorizeRequests(a -> a.anyRequest().permitAll())
        .headers().frameOptions().sameOrigin();

http
        .authorizeRequests(a -> a.anyRequest().permitAll())         
        .csrf(c - c.ignoringAntMatchers("/h2-console/**"));

http
        .authorizeRequests(a -> a.anyRequest().permitAll())         
        .csrf().ignoringAntMatchers("/h2-console/**")

但越来越多的是,它们都不起作用。
如何使用Lambda DSL保护我的h2控制台

rqenqsqc

rqenqsqc1#

**TL;DR:**使用与authorizeRequests相同的lambda语法:

http.csrf(csrf -> csrf.ignoringAntMatchers("/h2-console/**"))
  • 详细信息:* 您将旧语法(Spring Security 5)与新语法(Spring Security 6)混用。旧语法:将http.authorizeRequests().antMatchers("...").permitAll().and().csrf().ignoringAntMantchers("...")替换为http.authorizeRequests(a -> a.requestMatchers("...")).csrf(csrf -> ignoringAntMatchers("...))

相关问题