登錄失敗並重新打開登錄頁面時,我怎樣才能記住我值? 我可以在控制器上獲得_spring_security_remember_me的值嗎?彈簧安全 - 請檢查登錄失敗時記住我
我只需要在發生登錄錯誤時保留複選框的值!
登錄失敗並重新打開登錄頁面時,我怎樣才能記住我值? 我可以在控制器上獲得_spring_security_remember_me的值嗎?彈簧安全 - 請檢查登錄失敗時記住我
我只需要在發生登錄錯誤時保留複選框的值!
你可以嘗試以下解決方案: 1.插入自定義過濾器進入春季安全過濾器鏈 2.這個過濾器內獲得HTTP會話,當我們更改登錄存儲在那裏請求參數
的值(添加另一個參數),我們需要定製登錄表單和春季登錄處理過濾器的彈簧表示。 這裏是配置:
<authentication-manager alias="authenticationManager"/>
<beans:bean id="myFilter" class="test.MyAuthenticationProcessingFilter">
<custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />
<beans:property name="defaultTargetUrl" value="/initialize.action"/>
<beans:property name="authenticationFailureUrl" value="/login_failed.action"/>
<beans:property name="authenticationManager" ref="authenticationManager"/>
<beans:property name="alwaysUseDefaultTargetUrl" value="true"/>
<beans:property name="filterProcessesUrl" value="/perform_login"/>
</beans:bean>
<beans:bean id="entryPoint" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<beans:property name="loginFormUrl" value="/login.action"/>
</beans:bean>
MyAuthenticationProcessingFilter延伸彈簧的org.springframework.security.ui.webapp.AuthenticationProcessingFilter,包裹attemptAuthentication方法獲取請求參數並將其存儲HTTP會話內。這個類只是爲了展示這個想法而編寫的,爲了更好的練習瀏覽用於用戶名和密碼參數的AuthenticationProcessingFilter代碼。
公共類MyAuthenticationProcessingFilter延伸AuthenticationProcessingFilter {
@Override
public Authentication attemptAuthentication(HttpServletRequest request)
throws AuthenticationException {
String param = request.getParameter("_spring_security_remember_me");
HttpSession session = request.getSession();
if (session != null || getAllowSessionCreation()) {
session.setAttribute("_spring_security_remember_me", param);
}
return super.attemptAuthentication(request);
}
}
您可能會注意到「myfilter」的和「爲entryPoint」豆一起定義了另外由元素內定義的參數。您在需要默認行爲時使用。但在我們的例子中,我們使用自定義bean,所以你應該完全刪除元素。 現在我們需要告訴使用我們的豆。
<beans:bean id="myFilter" class="test.MyAuthenticationProcessingFilter">
<custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />
...
</beans:bean>
「爲entryPoint」 傳遞給使用屬性:
<http entry-point-ref="entryPoint">
...
<!-- no form-login here -->
</http>
「myfilter」 的豆通過使用bean定義內部元件傳遞到彈簧鏈
你的問題有點不清楚,或者你對春天的安全工作記得我有錯誤的印象。閱讀Spring Security的參考第11章「記住,我的身份驗證」
簡單地說是這樣工作的:
如果用戶使用其用戶名和密碼成功登錄並啓用了記住我複選框, Spring Security將創建一個驗證用戶並將其「發送」給用戶的cookie
未登錄用戶請求安全頁面(需要身份驗證)spring會檢查他是否爲有效的cookie。
我希望這可以幫助你。