close

Appfuse與Spring security

Appfuse中預設已套用好Spring security的Framework,並利用它來控管使用者存取網頁的權限,所有的控制都寫security.xml;而security.xml它被宣告在web.xml中,如下圖:

security.xml被放置在WEB-INF/中,而security.xml中的內容如下:

基本上這是實作Spring security的framework,所以有任何不懂的,都可以參考Spring security的網站,這邊只針對Appfuse幫我們設定好的部份做說明。

Security.xml中的設定

Security中的存取權限,都是以URL pattern來做區隔的,首先我們先來看下圖中的紅框部份:

紅框的部份指的是不需要進行任何驗証的網址部份,通常我們的Javascript、CSS與圖片,都不需要進行任何驗証,所以會在上方標記出來;再來是下方的的設定:

紅框中的設定,代表網址中如果是/admin/之類的網址,都會被限制ROLE_ADMIN的角色才能存取,而這個ROLE_ADMIN,其實是儲存在DB中的role這個表格,如下:

換句話說,我們可以在這個表格新增任何的角色,並在security.xml中,以name這個欄位的值,來對應即可;如果同一個網址(URL Pattern)要同時有多個角色,用「,」分隔即可。

form-login的設定

接下來要討論的是這個form-login的設定(參考下圖)

這個設定有三個(其實有更多可以使用的設定,詳細請參考Spring Security framework的網站)屬性,簡單地介紹這三個屬性的功能:

  • login-page:當發現這個使用者未登入時,要導到的登入頁面。

  • authentication-failure-url:當使用者登入失敗時,要導到的頁面。

  • login-processing-url:登入處理的網址,在Appfuse中已設定好了,所以不需要更動。

remember-me的設定

最後是這個remember-me的設定,這個設定對應頁面的「讓系統記住我」的功能(參考下圖);

使用者勾選擇後,在會一定時間內,即使被登出了,也不需要重新登入,因為系統會在使用者的cookie中存一段值,使用者下次需要登入時,只要cookie帶入這段值即可,不需要重新登入;這整個功能,即是remember-me。

結論

Appfuse已經幫我們結合Spring Security了,再透過Struts2之類的framework來操控網址,即可簡單地達到權限控管的效果,非常的方便快速,開發者只要專注在需求面的功能即可。

arrow
arrow

    JAVA Programmer 發表在 痞客邦 留言(0) 人氣()