cha*_*lin 11 spring spring-security
我想配置我的 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对象,因此您可以继续配置而无需调用and()。
这是他们之间唯一的区别吗?如果真是这样,这个重载版本岂不是显得多余了吗?
Mar*_*gio 18
两种声明方式authorizeRequests均有效。接受定制器的方法是使代码更易于阅读的一种方法,因为它避免了多个缩进级别。建议使用 lambda 定制器。
authorizeRequests和之间的区别authorizeHttpRequests解释如下。使用authorizeHttpRequests新的简化AuthorizationManagerAPI 和AuthorizationFilter,而authorizeRequests使用AccessDecisionManager和FilterSecurityInterceptor。后者将在 Spring Security 的未来版本中被弃用。
| 归档时间: | 
 | 
| 查看次数: | 19372 次 | 
| 最近记录: |