2017-08-05 29 views
2

グローバルメソッドセキュリティを有効にする必要がある場合があります。 org.springframework.beans.factory.UnsatisfiedDependencyException:エラーは、名前のBeanを作成するか」の問題は、私は必要な注釈(@EnableGlobalMethodSecurity(prePostEnabled =真) )を追加するとき、私はによって引き起こさ@EnableGlobalMethodSecurity(prePostEnabled = true)を使用するとエラーが発生する

を、次のようなエラーを取得していますsecurityConfiguration ':メソッド' setTrustResolver 'のパラメータ0で表現されている満足度の低い依存関係。ネストされた例外はorg.springframework.beans.factory.BeanCurrentlyInCreationExceptionです:名前 'getAuthenticationTrustResolver'でBeanを作成中にエラーが発生しました:リクエストされたBeanが現在作成中です。解決不可能な循環参照がありますか? org.springframework.beans.factory.annotation.InjectionMetadata.injectでorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:667) (InjectionMetadata.java:88)ORGで で 。 springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)org.springframework.beans.factoryでorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1225)で 。 (AbstractAutowireCapableBeanFactory.java:552) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowi (デフォルト・シングル・インスタンス) org.springframeworkでorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) でorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) で) org.springfraで.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:372)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1134)で mework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1028)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)で org.springframework.beans.factoryで 。 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingletonでorg.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306) でsupport.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) (DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFact ory.getBean(AbstractBeanFactory.java:202)org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependencyでorg.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207) で (DefaultListableBeanFactory。 Javaの:1136) org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1064)org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredMethodElement.injectで (AutowiredAnnotationBeanPostProcessor.java:659で) ... 189 more 原因:org.springframework.beans.factory。BeanCurrentlyInCreationException:名前が 'getAuthenticationTrustResolver'のBeanを作成中にエラーが発生しました:リクエストされたBeanが現在作成中です。解決できない循環参照がありますか? org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingletonでorg.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:347) (DefaultSingletonBeanRegistry.java:223)org.springframeworkで で。 beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.config。 DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1136) at org.springframework.beans.factory.support.DefaultLis 211以上

問題があるからorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredMethodElement.injectでtableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1064) (AutowiredAnnotationBeanPostProcessor.java:659) ... AuthenticationTrustResolver豆

これは

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Autowired 
    @Qualifier("customUserDetailsService") 
    UserDetailsService userDetailsService; 

    @Autowired 
    PersistentTokenRepository tokenRepository; 

    @Autowired 
    public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception { 
     auth.userDetailsService(userDetailsService); 
     auth.authenticationProvider(authenticationProvider()); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http. 
       authorizeRequests(). 
       antMatchers("/test/**").permitAll(). 
       antMatchers("/admin/**").access("hasRole('ADMIN')"). 
       and().formLogin().loginPage("/login"). 
       defaultSuccessUrl("/success-callback"). 
       loginProcessingUrl("/login").usernameParameter("username").passwordParameter("password"). 
       and().rememberMe().rememberMeParameter("remember-me").tokenRepository(tokenRepository). 
       tokenValiditySeconds(86400 * 2); 
//    and(). 
//    csrf().ignoringAntMatchers("/api/**").ignoringAntMatchers("/test/**"); 

    } 

    @Bean 
    public PasswordEncoder passwordEncoder() { 
     return new BCryptPasswordEncoder(); 
    } 

    @Bean 
    public DaoAuthenticationProvider authenticationProvider() { 
     DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider(); 
     authenticationProvider.setUserDetailsService(userDetailsService); 
     authenticationProvider.setPasswordEncoder(passwordEncoder()); 
     return authenticationProvider; 
    } 

    @Bean 
    public PersistentTokenBasedRememberMeServices getPersistentTokenBasedRememberMeServices() { 
     PersistentTokenBasedRememberMeServices tokenBasedservice = new PersistentTokenBasedRememberMeServices(
       "remember-me", userDetailsService, tokenRepository); 
     return tokenBasedservice; 
    } 

    @Bean 
    public AuthenticationTrustResolver getAuthenticationTrustResolver() { 
     return new AuthenticationTrustResolverImpl(); 
    } 

} 

セキュリティ設定クラスであるTIA

+0

循環依存性があるため(1)「AuthenticationTrustResolverImpl」コードを投稿できますか? (2) 'getAuthenticationTrustResolver' Beanは誰が使うべきですか? –

+0

私は永続的なログインを使用しているので、AuthenticationTrustResolverImplは、getAnonymousClass、isAnonymous @ManuelJordanなどの基本的なデフォルトメソッドを持つAuthenticationTrustResolverのデフォルトのスプリングセキュリティインプラントです –

+0

どのバージョンのスプリングブート、スプリングセキュリティなどを使用しますか? – mgyongyosi

答えて

3

あなたの春のセキュリティを最新バージョン(4.2.3.RELEASE)に更新しようとしてください!

+0

それは本当に問題を解決します –

+0

素晴らしい..私の問題を解決しました –

関連する問題