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"/>