Java 在“会话管理”筛选器位置替换默认筛选器

Java 在“会话管理”筛选器位置替换默认筛选器,java,spring,spring-security,servlet-filters,Java,Spring,Spring Security,Servlet Filters,我想用我自己的过滤器替换默认的SessionManagementFilter,但我遇到了这个问题 17:31:32901错误[[/accounts]]将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener的侦听器实例时发生异常 org.springframework.beans.factory.parsing.bean定义ParsingException:配置问题:筛选bean“”和“根bean:class[org.s

我想用我自己的过滤器替换默认的
SessionManagementFilter
,但我遇到了这个问题

17:31:32901错误[[/accounts]]将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener的侦听器实例时发生异常
org.springframework.beans.factory.parsing.bean定义ParsingException:配置问题:筛选bean“”和“根bean:class[org.springframework.security.web.session.SessionManagementFilter];范围=;抽象=假;lazyInit=假;自动连线模式=0;dependencyCheck=0;autowireCandidate=true;主=假;factoryBeanName=null;factoryMethodName=null;initMethodName=null;destroyMethodName=null'具有相同的“顺序”值。使用自定义过滤器时,请确保位置与默认过滤器不冲突。或者,您可以通过从中删除相应的子元素并避免使用来禁用默认过滤器。
有问题的资源:ServletContext资源[/WEB-INF/spring contexts/security.xml]

问题似乎是我使用了一个
元素/属性,它将默认过滤器设置在相同的位置。然而,我不是(或者如果我是无意的)

这是我的安全上下文定义:

<http use-expressions="true" auto-config="false" entry-point-ref="loginUrlAuthenticationEntryPoint">

    <!-- lots of intercept-url definitions (nothing else) -->

    <custom-filter position="SESSION_MANAGEMENT_FILTER" ref="accountsSessionManageFilter"/>
    <custom-filter position="FORM_LOGIN_FILTER" ref="accountsSsoFilter"/>
</http>

.......

<beans:bean id="accountsSessionManageFilter" class="org.springframework.security.web.session.SessionManagementFilter">
    <beans:property name="sessionAuthenticationStrategy" ref="NullAuthenticatedSessionStrategy"/>
</beans:bean>

.......

<bean id="accountsSsoFilter" class="cayetano.core.base.service.impl.spring.filter.SsoUserPassAuthFilter">
    <property name="authenticationManager" ref="ssoAuthManager" />

    <property name="authenticationFailureHandler" ref="relativeLoginFailureHandler" />
    <property name="authenticationSuccessHandler" ref="noopLoginSuccessHandler" />

    <property name="authenticationService" ref="basicAuthenticatorService" />
    <property name="authorityService" ref="userTypeBasedAuthotiryService" />
</bean>

.......
.......
那么为什么Spring抱怨我使用的是使用默认过滤器的
元素呢

文档中还指出,
是唯一使用默认过滤器的
元素,还有其他元素吗

我正在使用SpringSecurity3.0


谢谢,

如果您试图指定一个
自定义会话\u管理\u筛选器
,以便您可以更改默认类/实例的
会话身份验证策略
,只需使用:


你还知道我为什么在当前配置中出现错误吗?还不是100%清楚,但我相信使用安全名称空间会添加一些默认bean,即使你有。我试过了,效果很好,再次感谢。但仅使用名称空间添加隐式bean有点奇怪
<http ...>
    <session-management session-authentication-strategy-ref="NullAuthenticatedSessionStrategy"/>
</http>
<http ...>
    <session-management session-authentication-strategy-ref="sessionStrategy"/>
</http>

<bean id="sessionStrategy" class="org.springframework.security.web.authentication.session.NullAuthenticatedSessionStrategy"/>