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控制台
1条答案
按热度按时间rqenqsqc1#
**TL;DR:**使用与
authorizeRequests
相同的lambda语法:http.authorizeRequests().antMatchers("...").permitAll().and().csrf().ignoringAntMantchers("...")
替换为http.authorizeRequests(a -> a.requestMatchers("...")).csrf(csrf -> ignoringAntMatchers("...))