2012-12-31 101 views
2

我已經絞盡腦汁想了一會兒,而且一無所獲。這就是我的security-context.xml中的內容。這將成爲一個servlet。Spring Security LDAP IncorrectResultSizeDataAccessException

<security:http auto-config="true"> 
    <security:intercept-url pattern="/" 
     access="IS_AUTHENTICATED_REMEMBERED" /> 
    <security:intercept-url pattern="/login.html" 
     access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
    <security:form-login login-page="/login.html" 
     authentication-failure-url="/loginFailed.html" default-target-url="" /> 
    <security:anonymous /> 
    <security:logout /> 
</security:http> 

<security:authentication-manager alias="authenticationManager"> 
    <security:authentication-provider 
     ref="ldapAuthProvider" /> 
</security:authentication-manager> 

<beans:bean id="ldapAuthProvider" 
    class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider"> 
    <beans:constructor-arg> 
     <beans:bean 
      class="org.springframework.security.ldap.authentication.BindAuthenticator"> 
      <beans:constructor-arg ref="contextSource" /> 
      <beans:property name="userSearch" ref="userSearch"> 
      </beans:property> 
     </beans:bean> 
    </beans:constructor-arg> 
    <beans:constructor-arg> 
     <beans:bean id="authoritiesPopulator" 
      class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator"> 
      <beans:constructor-arg ref="contextSource" /> 
      <beans:constructor-arg value="" /> 
      <beans:property name="groupRoleAttribute" value="cn" /> 
      <beans:property name="searchSubtree" value="true" /> 
      <beans:property name="rolePrefix" value="ROLE_" /> 
      <beans:property name="convertToUpperCase" value="true" /> 
     </beans:bean> 
    </beans:constructor-arg> 
</beans:bean> 

<beans:bean id="contextSource" 
    class="org.springframework.security.ldap.DefaultSpringSecurityContextSource"> 
    <beans:constructor-arg 
     value="thepathtomyLDAPdatabase" /> 
    <beans:property name="userDn" 
     value="theuserpathforLDAP" /> 
    <beans:property name="password" value="mypassword" /> 
</beans:bean> 

<beans:bean id="userSearch" 
    class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch"> 
    <beans:constructor-arg index="0" value="CN=Users" /> 
    <beans:constructor-arg index="1" 
     value="(sAMAccountName={0})" /> 
    <beans:constructor-arg index="2" ref="contextSource" /> 
    <beans:property name="searchSubtree" value="true" /> 
</beans:bean> 

我不斷收到以下錯誤:

nested exception is java.lang.NoClassDefFoundError: org/springframework/dao/IncorrectResultSizeDataAccessException 

有人能告訴我什麼,我做錯了什麼?謝謝。

回答

4

您需要確保在類路徑中有spring-tx。如果您使用的是構建工具,則可以通過查看類似search.maven.org的內容來解釋其配置,以解釋配置的外觀。例如,如果你正在使用Spring 3.2.0.RELEASE和Maven你將要確保你已經在你的pom.xml如下:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-tx</artifactId> 
    <version>3.2.0.RELEASE</version> 
</dependency> 

注意,關鍵是要確保你的Spring依賴版本匹配(即組org.springframework的工件應該匹配),所以如果你沒有在其他地方使用Spring 3.2.0.RELEASE,你將需要確保你改變了版本號來匹配你的其他Spring依賴。

相關問題