グローバルメソッドセキュリティを有効にする必要がある場合があります。 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
循環依存性があるため(1)「AuthenticationTrustResolverImpl」コードを投稿できますか? (2) 'getAuthenticationTrustResolver' Beanは誰が使うべきですか? –
私は永続的なログインを使用しているので、AuthenticationTrustResolverImplは、getAnonymousClass、isAnonymous @ManuelJordanなどの基本的なデフォルトメソッドを持つAuthenticationTrustResolverのデフォルトのスプリングセキュリティインプラントです –
どのバージョンのスプリングブート、スプリングセキュリティなどを使用しますか? – mgyongyosi