Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Security Java配置:使用GlobalAuthenticationConfigurerAdapter配置AuthenticationManagerBuilder失败_Java_Spring_Spring Security_Spring Java Config - Fatal编程技术网

Spring Security Java配置:使用GlobalAuthenticationConfigurerAdapter配置AuthenticationManagerBuilder失败

Spring Security Java配置:使用GlobalAuthenticationConfigurerAdapter配置AuthenticationManagerBuilder失败,java,spring,spring-security,spring-java-config,Java,Spring,Spring Security,Spring Java Config,我不知道如何实现GlobalAuthenticationConfigurerAdapter的子类。根据SecurityConfigure接口的文档,init(SecurityBuilder)的实现不应在传递的SecurityBuilder对象上设置属性。相反,这应该在configure(SecurityBuilder)方法中完成。因此,我尝试了以下实现: @Configuration protected static class AuthenticationConfiguration exten

我不知道如何实现GlobalAuthenticationConfigurerAdapter的子类。根据SecurityConfigure接口的文档,init(SecurityBuilder)的实现不应在传递的SecurityBuilder对象上设置属性。相反,这应该在configure(SecurityBuilder)方法中完成。因此,我尝试了以下实现:

@Configuration
protected static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter {

    @Autowired
    private WebUserDetailsService userDetailsService;

    @Autowired
    private WebUserPasswordEncoder passwordEncoder;

    @Override
    public void configure (AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(this.userDetailsService).passwordEncoder(this.passwordEncoder);
    }

}
public boolean isConfigured() {
        return order >= CONFIGURING.order;
}
由于框架AbstractConfiguredSecurityBuilder中的以下检查,此配置在启动期间失败:

if(buildState.isConfigured()) {
            throw new IllegalStateException("Cannot apply "+configurer+" to already built object");
        }
BuildState.isConfigured()具有以下(令人惊讶的)实现:

@Configuration
protected static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter {

    @Autowired
    private WebUserDetailsService userDetailsService;

    @Autowired
    private WebUserPasswordEncoder passwordEncoder;

    @Override
    public void configure (AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(this.userDetailsService).passwordEncoder(this.passwordEncoder);
    }

}
public boolean isConfigured() {
        return order >= CONFIGURING.order;
}
它实际上会检查构建是否当前处于配置阶段(如javadoc中所述),但不会检查它是否已经配置(我猜这将是构建状态),正如方法名称所示

所以我的问题是:这是预期的行为还是Java配置中的错误?我在web上找到的所有其他示例通常都是在init()方法中配置生成器的,所以我可能只是没有正确理解文档

编辑:使用Spring Security 3.2.6

谢谢