.and() 在像 HttpSecurity 这样的春季安全类中做了啥?有人帮我理解这个

Posted

技术标签:

【中文标题】.and() 在像 HttpSecurity 这样的春季安全类中做了啥?有人帮我理解这个【英文标题】:what does .and() do in spring security classes like HttpSecurity ? Someone help me to understand this.and() 在像 HttpSecurity 这样的春季安全类中做了什么?有人帮我理解这个 【发布时间】:2018-06-02 03:50:30 【问题描述】:
    @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();

【问题讨论】:

您阅读过文档吗? 【参考方案1】:

来自春天documentation:

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

因此,考虑您有多个配置,一个用于具有 admin 角色的用户,另一个用于 simple user 角色,将它们连接在一起,我们使用and()方法。

而这项技术是builder design pattern

【讨论】:

非常感谢。我明白了 15年Java开发,官方文档里连“and”方法都找不到。 @Chuck check this 其实这个方法存在于很多类中,我分享的就是其中之一

以上是关于.and() 在像 HttpSecurity 这样的春季安全类中做了啥?有人帮我理解这个的主要内容,如果未能解决你的问题,请参考以下文章

将整个 Javascript 文件包装在像“(function() ... )()”这样的匿名函数中的目的是啥?

如何在像犰狳这样的库中扩展一个类?

android如何在像GMail这样的webview中显示PopupMenu

在像 bittorrent 这样的点对点协议的情况下,NAT 遍历是如何工作的。

在像 bittorrent 这样的点对点协议的情况下,NAT 遍历是如何工作的。

在像python time.time()这样的javascript中获取时间[重复]