2011-03-23 2 views
0

요청으로부터 직접 사용자를 인증하는 인증 필터를 구현하려고합니다. 그러나 나는 다음과 같은 예외를 얻고있다.봄 보안에서 InMemoryDaoImpl 사용

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'signedRequestAuthenticationProvider' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: 
Cannot resolve reference to bean  'org.springframework.security.core.userdetails.memory.InMemoryDaoImpl' 
    while setting bean 
property 'userDetailsService'; nested exception is 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.security.core.userdetails.memory.InMemoryDaoImpl' 
is defined at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) 

내 응용 프로그램 컨텍스트

<bean id="signedRequestAuthenticationProvider" class="src.SignedUsernamePasswordAuthenticationProvider"> 
     <property name="userDetailsService" ref="org.springframework.security.core.userdetails.memory.InMemoryDaoImpl"/> 
    </bean> 

내 security.xml이

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern="/login*" access="hasRole('ROLE_ANONYMOUS')"/> 
      <intercept-url pattern="/*" access="hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')"/> 

      <form-login login-page="/login.jsp"/> 
      <custom-filter ref="requestHeaderFilter" before="FORM_LOGIN_FILTER"/> 
    </http> 

    <authentication-manager alias="authenticationManager"> 
    <authentication-provider ref="signedRequestAuthenticationProvider"/> 
      <authentication-provider> 
     <user-service> 
      <user authorities="ROLE_USER" name="guest" password="guest"/> 
          <user authorities="ROLE_ADMIN" name="vinoth" password="vinoth"/> 
     </user-service> 
    </authentication-provider> 
</authentication-manager> 

내가 뭔가를 놓치고를 읽어인가?

답변

1

org.springframework.security.core.userdetails.memory.InMemoryDaoImpl은 bean 식별자가 아니므로 ref 속성에서 사용할 수 없습니다. 당신은 id 명시 적으로 식별자를 소개합니다 :

<bean id="signedRequestAuthenticationProvider" class="src.SignedUsernamePasswordAuthenticationProvider"> 
    <property name="userDetailsService" ref="userService"/> 
</bean> 

<authentication-manager alias="authenticationManager"> 
    <authentication-provider ref="signedRequestAuthenticationProvider"/> 
    <authentication-provider> 
     <user-service id = "userService"> 
      <user authorities="ROLE_USER" name="guest" password="guest"/> 
      <user authorities="ROLE_ADMIN" name="vinoth" password="vinoth"/> 
     </user-service> 
    </authentication-provider> 
</authentication-manager> 
+0

감사합니다. 이것은 효과가 있었다. – vinoth