spring-security .和()在Spring Security类(如HttpSecurity)中有什么作用?

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

在下面的代码示例中,.and()实际上在做什么?

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .addFilterAfter(new CsrfCookieGeneratorFilter(), CsrfFilter.class)
            .exceptionHandling()
            .authenticationEntryPoint(authenticationEntryPoint)
        .and()
            .rememberMe()
            .rememberMeServices(rememberMeServices)
            .key(env.getProperty("jhipster.security.rememberme.key"))
        .and()
            .formLogin()
            .loginProcessingUrl("/api/authentication")
            .successHandler(ajaxAuthenticationSuccessHandler)
            .failureHandler(ajaxAuthenticationFailureHandler)
            .usernameParameter("j_username")
            .passwordParameter("j_password")
            .permitAll()
        .and()
            .logout()
            .logoutUrl("/api/logout")
            .logoutSuccessHandler(ajaxLogoutSuccessHandler)
            .deleteCookies("JSESSIONID")
            .permitAll()
        .and()
            .headers()
            .frameOptions()
            .disable()
            .authorizeRequests()
                .antMatchers("/api/register").permitAll()
                .antMatchers("/api/activate").permitAll()
                .antMatchers("/api/authenticate").permitAll()
                .antMatchers("/api/logs/**").hasAuthority(AuthoritiesConstants.ADMIN)
                .antMatchers("/api/subscriptions").permitAll()
                .antMatchers("/api/**").authenticated();
}
w8f9ii69

w8f9ii691#

从Springdocumentation

关闭XML标记的Java Configuration等价物是使用and()方法表示的,该方法允许我们继续配置父。如果您阅读了代码,它也是有意义的。我想配置授权请求和表单登录,并配置HTTP基本身份验证。

因此,假设您有多个配置,一个用于具有admin角色的用户,另一个用于simple user角色,为了将它们连接在一起,我们使用and()方法。
这种技术是builder design pattern

相关问题