2014-02-20 3 views
2

Я использую Spring Security 3.2.0.RELEASE.UserDetailsService bean отсутствует с Spring Безопасность миграции с XML на JavaConfig

В настоящее время я переношу конфигурацию Spring Security на основе XML моего приложения на JavaConfig - Конфигурация Spring Spring.

В старом security.xml я настроил JDBC-UserDetailsService так:

<authentication-manager alias="authenticationManager"> 
    <authentication-provider> 
     <password-encoder ref="passwordEncoder" /> 
     <!-- parsed by JdbcUserServiceBeanDefinitionParser --> 
     <!-- the following creates a JdbcUserDetailsManager --> 
     <jdbc-user-service data-source-ref="dataSource" /> 
    </authentication-provider> 
</authentication-manager> 

Среди других эффектов, выше конфигураций XML автоматически регистрируется Весеннюю Bean типа JdbcUserDetailsManager(подтип UserDetailsService), который я мог бы вводить в другие компоненты:

@Service 
public class MyCustomService { 

    @Inject 
    private JdbcUserDetailsManager judm; 

    //... 
} 

Моего JavaConfig основанная подстройка выше XML выглядит следующим образом:

@Configuration 
// @ImportResource("classpath:to/no/longer/needed/security.xml") 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
      .jdbcAuthentication() 
      .passwordEncoder(somePasswordEncoder) 
      .dataSource(someDataSource); 
    } 

    // ... 
} 

Выше конфигурация JavaConfig не кажется, дополнительно зарегистрировать Spring Bean типа JdbcUserDetailsManager. Это означает, что MyCustomService не получает инъекцию такой фасоли, и поэтому я получаю NoSuchBeanDefinitionException:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.provisioning.JdbcUserDetailsManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()} 

Используя подход JavaConfig, как я могу достать фасоль типа JdbcUserDetailsManager?

ответ

0

вы пытались добавить

@Bean 
public JdbcUserDetailsManager jdbcUserDetailsManager(){ 
    return new JdbcUserDetailsManager(); 
} 

к классу SecurityConfig?

 Смежные вопросы

  • Нет связанных вопросов^_^