2

我已经为此绞尽脑汁了一段时间,但一无所获。这就是我的 security-context.xml 中的内容。这将是一个 servlet。

<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

1 回答 1

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 依赖项。

于 2012-12-31T17:17:10.783 回答