細顆粒度許可權控制

2021-07-11 18:48:54 字數 1860 閱讀 1894

細顆粒度許可權控制我們採用***完成

具體實現:

第一步:定義乙個類 繼承methodfilterinterceptor類

第二步:覆蓋dointercept方法

第三步:通過actioninvocation 物件獲取reques、actiont物件 進而獲取方法名

第四步:通過action物件和反射獲取方法的反射物件

第五步:獲取session中的角色使用者資訊以及方法上的許可權(註解)來校驗該使用者是否有操作該方法的許可權

第六步:在struts.xml中配置

**實現:

protected string dointercept(actioninvocation actioninvocation) throws exception else

return result;

}catch (exception e)

/*** 傳送錯誤訊息到頁面

*/request.setattribute("errormsg", errormsg);

/***log4j記錄日誌 

*/log log=logfactory.getlog(actioninvocation.getaction().getclass());

log.error("errormsg",e);

return "errormsg";}}

/**驗證細顆粒許可權控制*/

//獲取當前的登陸使用者

elecuser elecuser=(elecuser) request.getsession().getattribute("globle_user");

if(elecuser==null)

//獲取當前登陸角色的使用者(乙個使用者可能有多個角色)

hashtableht=(hashtable) request.getsession().getattribute("globle_role");

if(ht==null || ht.size()<=0)

//處理註解,判斷方法上是否存在註解(註解的名稱為:annotationlimit)

/** 例如:

* @annotationlimit(mid="aa",pid="0")

public string home()

//存在註解(呼叫註解)

annotationlimit limit = method.getannotation(annotationlimit.class);

//獲取註解上的值

string mid = limit.mid();  //許可權子模組名稱

string pid = limit.pid();  //許可權父操作名稱

//遍歷角色id

if(ht!=null && ht.size()>0)}}

return flag;}

配置檔案**實現(struts2.xml)

menuhome,title,left,change,loading,logout,alermstation,alermdevice,showmenu

總結:細顆粒的許可權控制總結

1.使用struts2的***

2.定義乙個註解(mid,pid),對應許可權code和父級許可權的code,將註解新增到action類中的每乙個方法

3.每乙個action類的方法上新增註解(mid="",pid=""),表示方法的唯一標識(即 該方法所具有的許可權)

4.在struts2的***中,從session中獲取角色id,獲取action類上的註解(mid和pid),使用角色id,mid和pid查詢角色許可權表,判斷當前使用者是否可以操作該方法

粗粒度與細粒度許可權控制

粗粒度許可權管理,對資源型別的許可權管理。資源型別比如 選單 url連線 使用者新增頁面 使用者資訊 類方法 頁面中按鈕。粗粒度許可權管理比如 超級管理員可以訪問戶新增頁面 使用者資訊等全部頁面。部門管理員可以訪問使用者資訊頁面包括 頁面中所有按鈕。細粒度許可權管理,對資源例項的許可權管理。資源例項...

SQL 2005 許可權控制粒度

第一步建立登入名和使用者名稱 建立登入名 viewer,db1為預設資料庫,123456為密碼 create login viewer with password 123456 default database db1 第二步為使用者授權 請注意是使用者不是登入名,使用者和登入名是對應的,但名稱可以...

二 測試的粒度,我們到底應該把粒度控制到多細?

對於資料不穩定的討論 url 是不是一定要測試到具體數值才叫具體?在沒有找到新方法之前,想保證測試具體到結果或者說是數值準確,那這個測試 會表現的非常脆弱,而花費了很多心思去寫出完美的測試最後這段測試 也沒有測出任何問題,有些得不償失了。為什麼要寫測試?都是為了寫出健壯的 正確的行為,獲得重構的勇氣...