2011-03-23 96 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