許可權設計 遞迴取消授權

2021-10-10 05:57:04 字數 1845 閱讀 8612

系統初始:根機構、根使用者超級管理員、所有的預設系統許可權等。

使用者登入系統,可選擇登入個人後台,對自己許可權內的選單進行管理操作;也可選擇自己某乙個機構進入機構管理後台;(注:多機構和個人後台可在前端切換,不用重新登入)

機構選單:部門、使用者、角色、許可權、key管理、

個人後台選單:許可權管理、機構管理、key管理、

業務邏輯及設計思路:

1.主體:使用者、機構、key同為主體,設計主體表,增加主體型別(使用者 0,機構 1,key 2);

2.主體之間可相互授權。注:機構可將許可權、角色授權給其他機構、使用者、key等;個人後台-個人許可權管理,使用者可將許可權授權給機構、key(個人後台不存在角色概念)。

3.角色下有多個許可權;許可權可屬於不同多個角色;

4.機構給其他機構授權角色,只能授權一級,被授權的主體不能將該角色再次授權,但可以使用該角色裡含有的許可權進行授權,或組成新的角色進行授權;

5.個人**機構許可權:機構給個人授權,是使用者登入該機構的後台管理時,對該機構有管理的許可權,而非個人可使用的許可權;

操作授權功能:

機構下,給主體新增、取消多個許可權;

機構下,給主體新增、取消多個角色;

**機構許可權:給使用者新增、取消多個許可權;(同1,用授權型別區分)

**機構角色:給使用者新增、取消多個角色;(同2,用授權型別區分)

角色新增、取消多個許可權;

角色新增、取消多個主體;

許可權新增、取消多個主體;

1.機構管理

2.使用者管理

3.角色管理

4.許可權管理

4.1機構許可權管理

4.2個人許可權管理

5.key管理

5.1個人key管理

5.2機構key管理

v3.0

第二個版本中,有層級遞迴取消授權關係,容易造成死迴圈,且事務不能統一控制,廢棄。

v1.0 初版:

機構、使用者、角色、許可權;

機構:機構樹

使用者可分別屬於不同的機構;

機構:角色、許可權(所有許可權+其他機構授予的許可權+其他使用者授予的許可權+其他機構授予角色帶有的許可權)

使用者:許可權、機構;

v2.0 修改遞迴方法:

~~// 許可權是否授權給-其他主體||角色

public void isgrantsubjectofperm(string subjectid,string pid,

string grantsubjectid,string granttype)else

}// 查詢該許可權--是否關聯其他角色

listroleidsofperm = subjectrepo.getroleidsofperm(subjectid,pid);

if(roleidsofperm.size()>0)}}

}// 查詢該角色有無授權-給子機構

public void isgrantsubjectofrole(string pid,string grantsubjectid,string roleid)

// 判斷許可權是否授權給---其他主體,

listsubjectidsofperm = subjectrepo.getsubjectidsofperm(subjectid,pid);

if(subjectidsofperm!=null && subjectidsofperm.size()>0)

}// 判斷許可權是否有關聯角色? 有刪除

listroleidsofperm = subjectrepo.getroleidsofperm(subjectid,pid);

if(roleidsofperm.size()>0)}}

}}~~

授權許可權服務設計解析

接上篇設計乙個授權服務 來聊聊 他是怎麼被設計出來的 許可權服務作為微服務中其實也可以認為只乙個授權中心。在這個授權中心下,他主要提供其他服務的需要的使用者的業務邏輯的驗證。比如你審核的時候需要驗證當前的這個使用者是否擁有操作這個動作的許可權。再比如賬務的操作也需要判斷當前的使用者是否擁有這些 許可...

python許可權授權 Python包裝授權

1 什麼是包裝 coding utf 8 包裝類,就是給被包裝的類加個殼 被包裝內實現殼的內部,而包裝內提供殼的外部 介面 有點類似於繼承關係,不過也不完全時,因為通過繼承也可以實現包裝效果,不使用繼承同樣可以實現包裝效果。下面通過乙個例子來展示 包裝的概念 class packagelist ob...

python許可權授權 MySQL授權(使用者許可權)

一 mysql查詢與許可權 二 授權 使用者管理 設定使用者密碼 前期準備工作 停止服務 將配置檔案當中的skip grant tables刪除掉 重啟服務 執行修改命令 檢視使用者狀態 如果資料過多,用 g可以規範布局 select user,host,authentication string ...