2014-02-26 132 views
0

我想在用戶單擊登錄/註冊頁面(/ user/add)時從http切換到https並保留https會話直到註銷。 主頁可用不使用https。 我在security.xml文件代碼:Spring Security HTTPS - 嘗試使用https登錄時出錯

<http auto-config="true"> 
    <intercept-url pattern="/home*" access="ROLE_USER" /> 
    <intercept-url pattern="/user/add*" access="ROLE_USER" requires-channel="https"/> 
    <form-login login-page="/user/add" default-target-url="/" authentication-failure-url="/user/add" /> 

    <port-mappings> 
     <port-mapping http="8080" https="8181"/> 
    </port-mappings> 


</http> 

我使用Glassfish的4.0,Spring MVC和Spring Security的3.0

當我點擊按鈕,頁面/用戶/添加,我得到這個錯誤:

ERR_TOO_MANY_REDIRECTS 

有什麼建議嗎?

+0

您是否使用了一些工具查看服務器發送的真實響應(查看了重定向)? - 迴應是什麼? – Ralph

+0

不,我簡單的想在登錄時得到https會話 –

+0

所以使用這個工具進行調試。如果你仍然不知道發生了什麼,在調試完成後,然後在你的問題中發佈獲得的響應。 – Ralph

回答

1

由於您將登錄頁面設置爲「/ user/add」(當然,它不是一個頁面 - 您應該將此地址設置爲真實的登錄頁面),您會得到太多重定向。但是,當用戶到達此地址時,他被阻止,因爲之前的行將「/ user/add *」定義爲需要進行身份驗證的受保護資源。到認證失敗,然後用戶被重定向到「/ user/add」,因爲這被定義爲'authentication-failure-url'。

這是解釋。

希望,如果你想看到一個例子,如何做你想做的事情,:-)

PS幫助,看看here(搜索「形式登錄」)

+0

Thx,現在我明白了問題,但我是新鮮的春天,我仍然不知道如何做到這一點,在點擊/user/add.html頁面(有登錄表單)後,它會將會話更改爲https,並保留它,直到用戶點擊註銷。你可以幫幫我嗎? –

+1

@ m.aibin - 您是否按照此建議對您的配置進行了任何更改?如果您爲您的登錄頁面URL添加一個攔截url規則,該規則爲permitAll並且require-channel = https – rhinds

+0

如果我使用permitAll,則會得到: 嵌套異常是java.lang.IllegalArgumentException:不支持的配置屬性:[permitAll] –