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