我有一个spring web应用程序,需要对可能有也可能没有Oauth2 token的请求进行身份验证。如果请求没有Bearer token,则应重定向到oauth2登录页面。如果它有Bearer token,则应使用oauth2 jwt解码器。是否可以像这样链接安全过滤器?我尝试了以下方法,但链接失败,错误代码为Cannot resolve method 'and' in 'HttpSecurity'
http.authorizeHttpRequests(authorizeRequests ->
authorizeRequests.requestMatchers("/")
.authenticated()
.requestMatchers("/admin/**")
.authenticated()
.requestMatchers("/v1/**")
.permitAll()
)
.csrf().ignoringRequestMatchers("/admin/**")
.and()
.oauth2ResourceServer(oauth2 -> oauth2
.jwt().decoder(jwtDecoder()))
.and()
.oauth2Login().userInfoEndpoint();
字符串
1条答案
按热度按时间qhhrdooz1#
如果您使用
and()
配置选项,则没有and()
。它不是必需的,因此不受支持,请参阅Lambda DSL的目标:Lambda DSL的目标
创建Lambda DSL是为了实现以下目标:
.and()
链接配置选项从Spring Security 5.2开始,您可以使用或不使用Paddas配置安全选项。使用Spring Security 7,您将不得不仅使用Paddas,请参阅Use the Lambda DSL:
使用Lambda DSL
Lambda DSL从5.2版开始就出现在Spring Security中,它允许使用Apache来配置HTTP安全性。
您可能在Spring Security文档或示例中看到过这种配置风格。让我们来看看HTTP security的lambda配置与以前的配置风格的比较。
字符串
型
Lambda DSL是配置Spring Security的首选方式,之前的配置样式在Spring Security 7中将无效,因为在Spring Security 7中需要使用Lambda DSL。这样做主要有以下几个原因: