在GlassFish中為Web應(yīng)用程序設(shè)置用戶訪問(wèn)權(quán)限
在實(shí)際應(yīng)用中GlassFish,我們可能會(huì)把用戶、權(quán)限、角色之類的寫(xiě)在數(shù)據(jù)庫(kù)中,用程序?qū)τ脩粼L問(wèn)權(quán)限加以控制,也可能會(huì)用到Spring AOP的Interceptor來(lái)攔截非法訪問(wèn),但是可能會(huì)存在一個(gè)問(wèn)題,如果將超級(jí)管理員的用戶名和密碼寫(xiě)在數(shù)據(jù)庫(kù),萬(wàn)一不小心把超級(jí)管理員的用戶或角色刪掉,怎么辦?因此讓?xiě)?yīng)用服務(wù)器來(lái)托管管理員(或其他特殊角色),不但可以避免這個(gè)問(wèn)題,而且也簡(jiǎn)化了應(yīng)用程序的用戶權(quán)限控制(你不必因?yàn)楹ε缕胀ㄓ脩舴欠ㄔL問(wèn)管理員的訪問(wèn)域而費(fèi)盡心思使用代碼或AOP來(lái)控制),而且GlassFish應(yīng)用服務(wù)器在安全性方面很有保證,大大提高了應(yīng)用程序的安全性。
實(shí)驗(yàn)環(huán)境:
1、Netbeans 6.1中文版,JDK1.6以上
2、GlassFish V2或Sun Application Server
實(shí)驗(yàn)步驟:
1、創(chuàng)建Web應(yīng)用程序,命名為WebApplicationSecurity,在創(chuàng)建過(guò)程中保持默認(rèn)選項(xiàng)即可,不需要選擇其他框架。
2、在WEB頁(yè) 目錄下創(chuàng)建兩個(gè)文件夾(新建-其他-其他-文件夾),分別命名為secureAdmin和secureUser,一個(gè)是管理員的訪問(wèn)域,一個(gè)是普通用戶的訪問(wèn)域。接下來(lái)將嚴(yán)格控制管理員和普通用戶的訪問(wèn)權(quán)限,普通用戶只能訪問(wèn)secureUser目錄下的頁(yè)面,而管理員則兩個(gè)都可以訪問(wèn)。
3、在secureAdmin目錄下創(chuàng)建一個(gè)名為pageA的HTML文件,同樣的,在secureUser下創(chuàng)建一個(gè)名為pageU的HTML文件內(nèi)容如下:
|
4、在WEB頁(yè)目錄下創(chuàng)建主頁(yè)index.jsp,將標(biāo)簽中的內(nèi)容覆蓋為:
5、在GlassFish中添加用戶權(quán)限。
首先,展開(kāi)服務(wù)-服務(wù)器,選擇GlassFish V2,右鍵-啟動(dòng)。(如果沒(méi)看到有GlassFish,請(qǐng)安裝后點(diǎn)擊“添加”)。
然后,打開(kāi)瀏覽器,輸入網(wǎng)址http://localhost:4848訪問(wèn)GlassFish的管理員平臺(tái),默認(rèn)用戶是admin,密碼是adminadmin。
接下來(lái),展開(kāi) 配置-安全性-領(lǐng)域,選擇file。在主窗口打開(kāi)的頁(yè)面中,點(diǎn)擊“管理用戶”按鈕,進(jìn)入用戶管理頁(yè)面,點(diǎn)擊新建,創(chuàng)建一個(gè)管理員用戶,用戶名為admin,密碼也是admin。同樣地,創(chuàng)建一個(gè)用戶user,密碼是user。
至此,GlassFish下的用戶權(quán)限已經(jīng)配置完畢,接下來(lái),我們需要在應(yīng)用程序的配置文件中添加一些配置來(lái)使用這兩個(gè)用戶。
6、打開(kāi)WEB-INF目錄下的web.xml,點(diǎn)擊“安全”選項(xiàng)卡,展開(kāi)“登陸配置”,選擇“基本”,在“域名稱”中填入 file。展開(kāi)“安全角色”,點(diǎn)擊“添加”,“角色名稱”中填入Admin,同樣的方法,添加一個(gè)角色名稱為User的角色。在“安全約束”選項(xiàng)下,點(diǎn)擊“添加安全約束”,“顯示名稱”中填入AdminConstraint,在“Web資源集合”選項(xiàng)下點(diǎn)擊“添加”,“資源名稱”為Admin,URL模式為“/secureAdmin/*”,表示Admin這個(gè)資源集合映射到secureAdmin下的任何頁(yè)面,如下圖所示:
選中“啟用驗(yàn)證約束”,編輯“角色名稱”,將Admin添加到右邊的框中。同樣,創(chuàng)建一個(gè)顯示名為UserConstraint的安全約束,資源集合中的資源名稱為User,URL模式為/secureUser/*。注意角色名稱應(yīng)該Admin和User都選擇(管理員和普通用戶均可進(jìn)入)。
7、最后,在sun-web.xml中添加WEB應(yīng)用定義的安全資源與GlassFish上的用戶的映射。打開(kāi)WEB-INF下的sun-web.xml,點(diǎn)擊“安全”選項(xiàng)卡,點(diǎn)擊“添加安全角色映射”,在“安全角色名”中填入Admin,添加主要用戶,主要用戶名稱為admin。同樣,創(chuàng)建一個(gè)名為User的安全角色,并添加主要用戶名為user的主要用戶,如下圖所示:
8、部署,運(yùn)行項(xiàng)目,點(diǎn)擊管理員頁(yè)面,如果用admin來(lái)登陸,將跳轉(zhuǎn)到pageA頁(yè)面,如果用user來(lái)登陸,則遭到攔截。如果你不希望使用“基本認(rèn)證”來(lái)接受用戶輸入,你也可以自己寫(xiě)一個(gè)表單來(lái)接受用戶輸入:
|
在web.xml的安全選項(xiàng)中的登陸配置里選中“窗體”,然后選擇登陸頁(yè)面和登陸錯(cuò)誤的頁(yè)面即可。
【編輯推薦】