11

重複の可能性:
エラー org.springframework.beans.factory.NoSuchBeanDefinitionException: 'springSecurityFilterChain' という名前の Bean が定義されていません

私のSpringアプリケーションでは、次のエラーが発生し続けます:

No bean named 'org.springframework.security.authenticationManager' is defined: Did you forget to add a gobal <authentication-manager> element to your configuration (with child <authentication-provider> elements)? Alternatively you can use the authentication-manager-ref attribute on your <http> and <global-method-security> elements.

Spring Security コンテキスト xml ファイルで、次のように定義しました。

<beans:bean id="myUserDetailsService" class="com.myProject.core.security.MyUserDetailsService" />

<beans:bean id="encoder" class="com.myProject.core.security.HmacPasswordEncoder" />

<authentication-manager id="clientAuthenticationManager" >
    <authentication-provider user-service-ref="myUserDetailsService">
        <password-encoder ref="encoder" />
    </authentication-provider>
</authentication-manager>

認証マネージャーと認証プロバイダーを明確に定義したのに、なぜ不平を言うのですか?

注:これは役立つかもしれませんが、より説明的なエラーです:

org.springframework.beans.factory.BeanCreationException: Error creating bean with 
name 'org.springframework.security.filterChains': Cannot resolve reference to bean
'org.springframework.security.web.DefaultSecurityFilterChain#2' while setting bean
property 'sourceList' with key [2]; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'org.springframework.security.web.DefaultSecurityFilterChain#2':
Cannot resolve reference to bean 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0'
while setting constructor argument with key [1]; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with
name 'org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0':
Cannot resolve reference to bean 'org.springframework.security.authentication.ProviderManager#0'
while setting bean property 'authenticationManager'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with
name 'org.springframework.security.authentication.ProviderManager#0': Cannot resolve
reference to bean 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0'
while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'org.springframework.security.config.authentication.AuthenticationManagerFactoryBean#0':
FactoryBean threw exception on object creation; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named
'org.springframework.security.authenticationManager' is defined: Did you forget to
add a gobal <authentication-manager> element to your configuration (with child
<authentication-provider> elements)? Alternatively you can use the authentication-manager-ref
attribute on your <http> and <global-method-security> elements.
4

3 に答える 3

13

authenticationManager は名前で検索されるため、次のように変更するだけです。

<authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="myUserDetailsService">
        <password-encoder ref="encoder" />
    </authentication-provider>
</authentication-manager>
于 2012-12-28T15:32:10.940 に答える
1

clientAuthenticationManager を探すには、Spring Security Context ファイルを変更する必要があります。この行を http セットアップに追加できます

<http use-expressions="true" authentication-manager-ref="clientAuthenticationManger">
于 2012-12-28T16:11:14.537 に答える
0

このリンクを見てください:

フィルターは実際には DelegatingFilterProxy であり、フィルターのロジックを実際に実装するクラスではないことに注意してください。DelegatingFilterProxy が行うことは、フィルターのメソッドを、Spring アプリケーション コンテキストから取得される Bean に委任することです。

...

アプリケーションコンテキストで javax.servlet.Filter を実装する springSecurityFilterChain という名前の Bean を定義する必要があります。

于 2012-12-28T15:31:19.613 に答える