我使用弹簧安全4.1,我面对的问题是当我尝试登录时,我几次发送回会话过期页面。我已经试过许多东西,如添加我自己也HttpSessionListener加入 org.springframework.security.web.session.HttpSessionEventPublisher 但会不断到期。我在其中一个问题中读到了这种行为的解释 “在某些情况下,Spring Security有可能使会话无效(例如,登录后,用户获得新的HttpSession)。” 我使用Fiddler工具来查看发生了什么,我看到用户已通过身份验证,但立即被重定向到会话过期页面。我想让同一个用户登录尽可能多的次数。我还在一些地方看过它将有助于转向3.x版本,但我认为它可能适用于使用旧版本弹簧的情况。请提出 。谢谢弹簧安全会话超时
<http auto-config="true" use-expressions="true"
authentication-manager-ref="authenticationManager">
<session-management
invalid-session-url="/login?eventType=sessionTimedOut"
session-fixation-protection="none"
/>
<intercept-url pattern="/login" access="permitAll" />
<intercept-url pattern="/*" access="hasAnyAuthority('FF_USER','FF_ADMIN')" />
<form-login login-page="/login"
authentication-success-handler-ref="authenticationSuccessHandler"
authentication-failure-handler-ref="customAuthenticationFailureHandler"
login-processing-url="/j_spring_security_check"
username-parameter="j_username"
password-parameter="j_password"
/>
<logout invalidate-session="false" logout-success-url="/login?eventType=logout"
logout-url="/j_spring_security_logout" delete-cookies="JSESSIONID"/>
<csrf token-repository-ref="csrfTokenRepository" />
</http>
<beans:bean id="csrfTokenRepository"
class="org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository">
<beans:property name="headerName" value="X-XSRF-TOKEN" />
</beans:bean>
<beans:bean id="authenticationSuccessHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<beans:property name="defaultTargetUrl" value="/home"/>
<beans:property name="alwaysUseDefaultTargetUrl" value="true"/>
</beans:bean>
<beans:bean id="customAuthenticationFailureHandler" class="*.*.CustomAuthenticationFailureHandler">
<beans:property name="defaultFailureUrl" value="/login?eventType=error"></beans:property>
<beans:property name="baseFailureUrl" value="/login?eventType=error"></beans:property>
</beans:bean>
<beans:bean id="authenticationManager"
class="org.springframework.security.authentication.ProviderManager">
<beans:constructor-arg>
<beans:list>
<beans:ref bean="ldapAuthenticationProvider" />
</beans:list>
</beans:constructor-arg>
<beans:property name="eraseCredentialsAfterAuthentication"
value="true" />
</beans:bean>
我也曾使用过。在那种情况下,当我注销时,我被发送到会话过期页面而不是注销页面。有问题的问题间歇性地发生,我可以登录,如果我再试一次,但问题是为什么会话登录后立即过期。它应该在web.xml中给出的持续时间内启动并保持不变。即使在上面提到的更改中,我也遇到了同样的问题。我使用Websphere可能会在那里改变一些东西? – hims
[erase-cookie-in-websphere-how-to-log-out](http://stackoverflow.com/questions/27466797/erase-cookie-in-websphere-how-to-log-out)和[WSSecurityHelper ](http://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.javadoc.doc/web/apidocs/com/ibm/websphere/security/WSSecurityHelper.html),这些可能有帮助,你需要添加一个注销处理程序来实现'LogoutHandler'到'LogoutFilter'处理程序 – chaoluo
这并没有帮助,我实际上发现有两个请求从我的终端进入,一旦我解决了这个问题,这种行为没有发生再次。感谢您的帮助。我非常感谢你分享你的想法。 – hims