2011-03-23 94 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 2011-03-23 14:32:43