l
l
l
針對OA系統的特點,權限說明:
權限
在系統中,權限通過模塊+動作來產生,模塊就是整個系統中的一個子模塊,可能對應一個菜單,動作也就是整個模塊中(在B/S系統中也就是一個頁面的所有操作,比如“瀏覽、添加、修改、刪除”等)。將模塊與之組合可以產生此模塊下的所有權限。
權限組
為了更方便的權限的管理,另將一個模塊下的所有權限組合一起,組成一個“權限組”,也就是一個模塊管理權限,包括所有基本權限操作。比如一個權限組(用戶管理),包括用戶的瀏覽、添加、刪除、修改、審核等操作權限,一個權限組也是一個權限。
角色
權限的集合,角色與角色之間屬于平級關系,可以將基本權限或權限組添加到一個角色中,用于方便權限的分配。
用戶組
將某一類型的人、具有相同特征人組合一起的集合體。通過對組授予權限(角色),快速使一類人具有相同的權限,來簡化對用戶授予權限的繁瑣性、耗時性。用戶組的劃分,可以按職位、項目或其它來實現。用戶可以屬于某一個組或多個組。
通過給某個人賦予權限,有4種方式(參考飛思辦公系統)
A.
a)
b)
B.
a)
b)
c)
C.
a)
b)
D.
a)
b)
針對職位、項目組:
如果用添加新員工,員工調換職位、項目組,滿足了員工會自動繼承所在職位、項目組的權限,不需要重新分配權限的功能。
用戶管理
用戶可以屬于某一個或多個用戶組,可以通過對用戶組授權,來對組中的所有用戶進行權限的授予。一個用戶可以屬于多個項目組,或擔任多個職位。
授權管理
將一個基本權限或角色授予用戶或用戶組,使用戶或用戶組擁有授予權限的字符串,如果角色、職位、項目中存在相同的基本權限,則取其中的一個;如脫離角色、職位、項目組,只是取消用戶或用戶組的中此角色、職位、項目組所授予的權限。用戶所擁有的權限是所有途徑授予權限的集合。管理員用戶可以查看每個用戶的最終權限列表。
權限管理
基本操作權限與權限組(基本操作權限的集合)的管理。
OA權限管理設計的實現
物理數據模型圖如下:
物理數據模型圖
根據以上設計思想,權限管理總共需要以下基本表:
tb_User:用戶信息基本表;
tb_Department:部門表;
tb_Company:公司表;
tb_Module:系統模塊表;
tb_Action:系統中所有操作的動作表;
tb_Permit:由tb_Module與tb_Action兩表結合產生的系統基本權限表;
tb_Permit_Group:權限組表,將一模塊的中的所有權限劃分一個權限組中,可以通過權限組授予用戶權限;
tb_Role:角色表,基本權限的集合。無上級與下級之分;
tb_Position:職位表,有上級與下級之分;
tb_Project:項目組表,
tb_Role_Permit:角色授權表;
tb_Postion_Permit:職位授權表;
tb_Project_Permit:項目授權表;
tb_Project_User:項目成員表,IsLead字段代表此成員為項目組長;
tb_Postion_User:職位成員表;
tb_User_Permit:用戶授權表,用戶ID與角色、職位、項目及直接授予的權限串表;
權限的產生:
權限代碼PermitCode=ModuleCode+ActionCode。
權限組:
角色、職位、項目:
用戶授權:
用戶授權表中的PermitCode為直接授權的權限代碼串,直接給用戶分配權限。
實例:
用戶ID為UserId=1的用戶權限授權表的記錄為:
RoleCode=001,003
PostionCode = 001,002
ProjectCode=001,005
PermitCode = 010101,020102
表明此用戶擁有兩個角色,代碼為001和003,并繼承這兩個角色的權限;
擔任兩個職位,代碼為001與002,并繼承兩個職位的權限;
屬于兩個項目組中的成員,項目代碼為001與005,并繼承兩個項目中的權限。
直接指定給用戶的權限為010101與010102這兩個權限代碼的權限
用戶權限字符串: