Spring安全 - 找不到类DaoAuthenticationProvider

时间:2014-12-18 10:32:09

标签: java spring spring-mvc spring-security

我似乎陷入了困境,无法弄清楚发生了什么。我目前正在尝试使用Spring安全性将用户从使用Sha-256加密迁移到Bcyrpt。我查看了this answer并安装了该类,但是我在Tomcat启动时遇到以下错误:

     ERROR org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:307) - Context initialization failed
    org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class   [org.springframework.security.authentication.dao.DaoAuthenticationProvider<200c><200b>] for  bean with name 'customAuthenticationProvider' defined in file  [/var/lib/tomcat7/webapps/UKExtranet/WEB-INF/classes/META-INF/spring/applicationContext-security.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.security.authentication.dao.DaoAuthenticationProvider<200c><200b>

虽然这看起来很简单(ClassNotFoundException)但是这个课肯定在那里,我已经检查过,甚至让一个同事检查以防万一我疯了,他也说它就在那里。

以下是我的applicationContext-security.xml文件的相关部分:

     <bean id='bCryptPasswordEncoder'
    class='co.uk.thehartford.life.security.passwordencoder.MigrateUsersPasswordEncoder' />

<security:authentication-manager>
    <security:authentication-provider
        user-service-ref="userDetailsService">
        <security:password-encoder ref="bCryptPasswordEncoder" />
    </security:authentication-provider>
</security:authentication-manager>


<bean id="userDetailsService" class="co.uk.thehartford.life.security.dao.ExtranetJdbcDaoImpl">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="customAuthenticationProvider"
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider‌​">
    <property name="userDetailsService" ref="userDetailsService" />
    <property name="passwordEncoder" ref="bCryptPasswordEncoder" />
</bean>

我不知道是什么原因造成了这个错误。有人有主意吗?任何帮助是极大的赞赏。谢谢,需要任何进一步的信息让我知道,我会发布我能做的。

我还应该指出我对Spring很新,所以我可能会遗漏一些非常简单的东西。

1 个答案:

答案 0 :(得分:1)

看起来人物就在那里(并且也复制到你的问题中,Firefox奇怪地显示了这一行)。

如果我跑:

 curl http://stackoverflow.com/questions/27544456/spring-security-cannot-find-class-daoauthenticationprovider  | grep --context=2 class=\"org.springframework.security.authentication.dao.DaoAuthenticationProvider | less

我明白了:

&lt;bean id="customAuthenticationProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider<U+200C><U+200B>"&gt;
&lt;property name="userDetailsService" ref="userDetailsService" /&gt;
&lt;property name="passwordEncoder" ref="bCryptPasswordEncoder" /&gt;

所以他们肯定会出现在你上面发布的内容中。尝试删除该行并再次重写,因为holmis83建议。