作者
一
可以使用的系統資源
資源在系統中呈現為一棵樹
修改為用戶管理的葉子
綁定可操作資源的集合
比如系統管理員
一般用戶
角色可以有依賴角色
RoleA
RoleD 倚賴RoleA
假設一個用戶的角色是RoleD
根據倚賴關系
系統中的使用者
二
上述三個概念之間的綁定關系為用戶綁定一個角色
角色綁定資源有兩種綁定
兩種一種只綁定節點下的葉子
限的分配需要做到一個角色可以訪問整個資源樹中的任意節點和葉子的組合
三
我們使用namespace的方式去構造一棵樹
下面形如:sysytem
上面的可以理解為system是一個節點
一個葉子common
四
在Struts中一個Action的配置通常如下:
<action path=
type=
attribute=
scope=
validate=
<forward name=
<forward name=
</action>
為了使沒一個Action綁定到一個跟節點下
<action path=
type=
attribute=
scope=
rights=
validate=
<forward name=
<forward name=
</action>
為了在xml parse的時候可以加載上面的配置
修改org/apache/struts/config/ActionConfig
增加如下代碼
protected String rights=
public String getRights(){
return this
}
public void setRights(String rights){
if (configured) {
throw new IllegalStateException(
}
this
}
假如修改成功後我們把ActionMapping 打印出來會看到相關的配置
五
在我的實現中我使用xml文件去配置如下
<role name=
<resource
<resource name=
<resource name=
<!
</resource
<node
<node name=
<!
</node
</role>
這一部分有很多中實現方式
在BaseAction裡面實現
另外一種交給Struts去判斷
org
裡面有一個processActionPerform
調用Action的execute去執行Action
我們可以修改processActionPerform讓其在執行execute前先執行權限檢查
如果是這樣的話
讓一個方法去實現權限判斷
如果使用第二種需要修改蠻多源代碼
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28653.html