20 3月 2011

Spring Security (2) Basic Configuration of <http>

看過先前的說明應該會有些困惑,我們應該先稍為拆解一下<http>
<http auto-config='true'> 代表了三個預設定設定

  • <form-login>
  • <http-basic>
  • <logout>

<form-login>代表要使用基本的Form-based authentication,但由於沒有指定登入的頁面,所以SpringSecurity會直接採用內建的Servlet產生登入的頁面,如果只是展示一下系統,當然沒問題,但真實在使用的系統應該沒辦法接受,所以直接加上<form-login login-page="/your_login.jsp" />這樣的設定就可以改用目前系統使用的登入頁面,但由於其他設定都沒動,所以form的欄位及action url仍有一定的要求,action仍必需是“/j_spring_security_check“,account的欄位名稱必需是“j_username“,password欄位名稱必需是“j_password“。
form-login還可以設定其他的參數,像login-processing-url代表action要送出的url,default-target-url代表登入成功後要轉的url,authentication-failure-url代表登入失敗後要轉入的url,always-use-default-target設定為true則代表登入成功或失敗都要轉入default-target-url。
比較有趣的是authentication-success-handler-ref與 authentication-failure-handler-ref,這兩個參數不應該與default-target-url、authentication-failure-url共用,這兩個handler-rul的設定代表啟用AuthenticationSuccessHandler與AuthenticationFailureHandler,如果想實現轉入登入前的那一頁用這個設定會很容易達成。

<http-basic>則代表使用HTTP basic authentication header,主要是將帳密用冒號(:)組合,再以base64編碼後送出,這個設定讓系統可以很容易地支援REST的程式。

<logout>代表起用Logout Filter,就SpringSecurity認為,每個系統都應該要有一個Logout Filter才對,比較form-login,當然也可以設定logout-url、logout-success-url及success-handler-rel,另一項是invalidate-session,若設定為true,在登出的同時就會令session失效。

 

沒有留言: