TLDR:Spring重定向到登录页面时正在销毁当前的HTTP会话;这破坏了登录后导航到DefaultSavedRequest的能力。这是为什么发生?Spring Security - SavedRequestAwareAuthenticationSuccessHandler是否损坏?
详情 - 我保持了传统的Spring应用程序:
- 弹簧芯版本3.1.0
- 的Spring Security版本3.1.0
当试图利用SavedRequestAwareAuthenticationSuccessHandler在我登录配置,它不工作。这里是什么似乎是发生了什么:
- HTTP GET担保资源:
http://localhost:8080/myapp/viewWorkOrder?workOrderNumber=315261
春季正确决定,我没有记录并保存我的要求:
DEBUG o.s.s.w.s.HttpSessionRequestCache - DefaultSavedRequest added to Session: DefaultSavedRequest[http://localhost:8080/myapp/viewWorkOrder?workOrderNumber=315261]
春季正确重定向到我的登录页面:
DEBUG o.s.security.web.FilterChainProxy - /login.jsp at position 1 of 9 in additional filter chain; firing Filter: 'ChannelProcessingFilter'
Spring de stroys这有效地破坏以后使用DefaultSavedRequest的能力在当前会话:
DEBUG o.s.s.w.s.HttpSessionEventPublisher - Publishing event: org.springframework.security.web.session.HttpSessionDestroyedEvent[[email protected]]
为什么或者是什么原因造成当前会话被破坏?
以下是相关配置细节:
<bean id="savedRequestAwareAuthenticationSuccessHandler"
class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<property name="defaultTargetUrl" value="/postLogin" />
<property name="targetUrlParameter" value="targetUrl" />
<property name="alwaysUseDefaultTargetUrl" value="false" />
</bean>
<security:http auto-config="false">
<!-- Override default login and logout pages -->
<security:form-login login-page="/login.jsp"
login-processing-url="/j_spring_security_check"
authentication-failure-url="/login.jsp?login_error=1"
authentication-success-handler-ref="savedRequestAwareAuthenticationSuccessHandler"
/>
<security:session-management session-fixation-protection="none"/>
- 注意的
session-management
列入似乎并不影响功能两种方式。
当你确切地看到,你的会议正在被破坏?重新定向后?或者在您输入您的凭证并尝试登录后? – Leffchik
@Leffchik,重定向后。当我尝试隔离相对于重定向控制器发生的情况时,我会在其中添加一条评论。 – kansasSamurai