spring-security 授权请求()与授权HttpRequests(定制器< AuthorizeHttpRequestsConfigurer.AuthorizationManagerRequestMatcherRegistry>

u3r8eeie  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(683)

我想配置我的spring应用程序安全性,所有的请求都应该在被服务之前进行身份验证。
因此,我创建了一个过滤器链bean:

@Bean
    SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http)
            throws Exception {
        return http
            .authorizeRequests().anyRequest().authenticated()
            .and().formLogin()
            .and().build();
    }

我还发现authorizeRequests方法有一个重载版本,它接受一个定制器接口参数。

@Bean
    SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http)
            throws Exception {
        return http
            .authorizeRequests(authorizeRequests ->
                authorizeRequests.anyRequest().authenticated()
            )

            .formLogin()
            .and().build();
    }

我注意到参数化的authorizeRequests方法将返回相同的HttpSecurity对象,因此您可以继续进行配置而无需调用和()。
如果只是这样的话,这个超负荷版本岂不是显得多余了?

9q78igpj

9q78igpj1#

这两种声明authorizeRequests的方法都是有效的。接受定制器的方法是一种使代码更容易阅读的方法,因为它避免了多个缩进级别。建议使用lambda定制器。
authorizeRequestsauthorizeHttpRequests之间的区别在here中进行了说明。authorizeHttpRequests使用新的简化的AuthorizationManager API和AuthorizationFilter,而authorizeRequests使用AccessDecisionManagerFilterSecurityInterceptor。后者将在Spring Security的未来版本中被弃用。

相关问题