基於Struts的許可權實現

2021-04-20 02:17:10 字數 1675 閱讀 3824

一:概念介紹 

1:)資源

可以使用的系統資源.比如註冊使用者是一種資源,修改使用者資訊也是一種資源.

資源在系統中呈現為一棵樹.假如使用者管理是乙個節點.使用者註冊,使用者資訊

修改為使用者管理的葉子。葉子具有不可分割性.

2:)角色

繫結可操作資源的集合。

比如系統管理員,可以使用全部資源.

一般使用者,可以註冊和修改檢視自己的資訊.

角色可以有依賴角色。也就是說現在系統中存在

rolea,roleb,rolec ,roled 四種角色.

roled 倚賴rolea

假設乙個使用者的角色是roled.

根據倚賴關係。預設有rolea 的可使用資源.

3:)使用者

系統中的使用者,因為角色可以倚賴,所以乙個使用者只有一種角色.

二:資源的分配

上述三個概念之間的繫結關係為使用者繫結乙個角色,角色繫結若干資源.

角色繫結資源有兩種繫結,一種是繫結葉子,一種繫結節點。繫結節點有

兩種一種只繫結節點下的葉子,一種繫結節點下所有的葉子.在系統中權

限的分配需要做到乙個角色可以訪問整個資源樹中的任意節點和葉子的組合. 

三:資源樹的構造

我們使用namespace的方式去構造一棵樹.根節點為空。

下面形如:sysytem.user.useradd,system.department.add,system.common

上面的可以理解為system是乙個節點,並有兩個子節點user,department,

乙個葉子common

四:struts中的資源標識

在struts中乙個action的配置通常如下:

為了使沒乙個action繫結到乙個跟節點下,我們加乙個選項把上面的配置修改為

為了在xml parse的時候可以載入上面的配置,我們需要修改一下struts的源**

修改org/apache/struts/config/actionconfig

增加如下**

protected string rights="common";

public string getrights()

public void setrights(string rights)

this.rights=rights;

}五:許可權分配的實現

1:)實現角色資源的繫結

在我的實現中我使用xml檔案去配置如下:

2:)許可權的判斷

這一部分有很多中實現方式,一種所有的action繼承baseaction

在baseaction裡面實現,並在沒乙個action裡面去呼叫判斷.

另外一種交給struts去判斷

org.apache.struts.action.requestprocessor

裡面有乙個processactionperform

呼叫action的execute去執行action 

我們可以修改processactionperform讓其在執行execute前先執行許可權檢查

如果是這樣的話,必須修改org.apache.struts.action.action

讓乙個方法去實現許可權判斷.

如果使用第二種需要修改蠻多源**,不建議對struts不熟悉的人使用

基於Struts的許可權實現

2 許可權的判斷 這一部分有很多中實現方式,一種所有的action繼承baseaction 在baseaction裡面實現,並在沒乙個action裡面去呼叫判斷.另外一種交給struts去判斷 org.apache.struts.action.requestprocessor 裡面有乙個proces...

基於Struts的許可權實現

基於struts的許可權實現 2 許可權的判斷 這一部分有很多中實現方式,一種所有的action繼承baseaction 在baseaction裡面實現,並在沒乙個action裡面去呼叫判斷.另外一種交給struts去判斷 org.apache.struts.action.requestproces...

基於struts實現websocket的實現方案

鄙人有個需求,基於websocket實現瀏覽器與伺服器的通訊。由於之前沒有使用過websocket,在網上大致搜尋了一圈,尋找websocket的整合方案。由於事物繁忙,不能再像以前那樣每個步驟精細化截圖,因此憑著記憶記錄一下 1.基於spring的方式實現,加入spring websocket依賴...