<div id="article_content" class="article_content clearfix"> <div class="article-copyright"> <span class="creativecommons"> <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"> </a> <span>版權聲明:本文爲博主原創文章,遵循<a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank"> CC 4.0 BY-SA </a>版權協議,轉載請附上原文出處連接和本聲明。 </span> <div class="article-source-link2222"> 本文連接:<a href="https://blog.csdn.net/u013630349/article/details/51733749">https://blog.csdn.net/u013630349/article/details/51733749</a> </div> </span> </div> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-3019150162.css"> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-3019150162.css"> <div class="htmledit_views" id="content_views">css
<p><strong>權限</strong></p> <p>在系統中,權限經過<span style="color:#FF0000;"><strong>模塊+動做</strong></span>來產生,模塊就是整個系統中的一個子模塊,可能對應一個菜單,動做也就是整個模塊中(在B/S系統中也就是一個頁面的全部操做,好比「瀏覽、添加、修改、刪除」等)。將模塊與之組合能夠產生此模塊下的全部權限。</p> <p><strong>權限組</strong></p> <p>爲了更方便的權限的管理,另將一個模塊下的全部權限組合一塊兒,組成一個「<strong>權限組</strong>」,也就是一個模塊管理權限,包括全部基本權限操做。好比一個權限組(用戶管理),包括用戶的瀏覽、添加、刪除、修改、審覈等操做權限,一個權限組也是一個權限。</p> <p><strong>角色</strong></p> <p>權限的集合,角色與角色之間屬於平級關係,能夠將基本權限或權限組添加到一個角色中,用於方便權限的分配。</p> <p><strong>用戶組</strong></p> <p>將某一類型的人、具備相同特徵人組合一塊兒的集合體。經過對組授予權限(角色),快速使一類人具備相同的權限,來簡化對用戶授予權限的繁瑣性、耗時性。用戶組的劃分,能夠按 <span style="color:#FF0000;"><strong>職位、項目</strong></span> 或其它來實現。用戶能夠屬於某一個組或多個組。</p> <p> </p> <p>經過給某我的賦予權限,有4種方式</p> <p>A. <strong>經過職位</strong></p> <p>a) 在職位中,職位成員的權限<strong>繼承</strong>當前所在職位的權限,對於下級職位擁有的權限不可繼承。 <br></p> <p>b) <strong>實例中</strong>:如前臺這個職位,對於考勤查詢有權限,則能夠經過對前臺這個職位設置考勤查詢的瀏覽權,使他們有使用這個對象的權限,而後再設置個,考勤查詢權(固然也能夠不設置,默認能進此模塊的就能查詢),則全部前臺人員都擁有考勤查詢的權利。</p> <p>B. <strong> 經過項目</strong></p> <p>a) 在項目中,項目成員的權限來自於所在項目的權限,他們一樣不能繼承下級項目的權限,而對於項目組長,他對項目有全權,對下級項目也同樣。</p> <p>b) <strong>實例中</strong>:在項目中,項目成員能夠對項目中上傳文檔,查看本項目的文檔,能夠經過對項目設置一個對於本項目的瀏覽權來實現進口,這樣每一個成員能訪問這個項目了,再加上項目文檔的上傳權和查看文檔權便可。</p> <p>c) 對於組長,由於能夠賦予組長一個組長權(組長權是個特殊的權限,它包含其餘各類權限的一個權限包),全部組長對於本項目有全權,則項目組長能夠對於項目文檔查看,審批,刪除,恢復等,這些權限對於本項目的下級項目依然有效。</p> <p>C. <strong>經過角色</strong></p> <p>a) 角色中的成員繼承角色的權限,角色與角色沒有上下級關係,他們是平行的。經過角色賦予權限,是指沒辦法按職位或項目的分類來賦予權限的另外一種方式,如:系統管理員,資料備份員…</p> <p>b) <strong>實例中</strong>:對於本系統中,全體人員應該默認都有的模塊,如個人郵件,個人文檔,個人日誌,個人考勤……,這些模塊系統成員都應該有的,咱們創建一個角色爲系統默認角色,把全部默認訪問的模塊的瀏覽權加入到裏面去,則系統成員都能訪問這些模塊。</p> <p>D. <strong> 直接指定</strong></p> <p>a) 直接指定是經過對某我的具體指定一項權限,使其有使用這個權限的能力。直接指定是角色指定的一個簡化版,爲了是在創建像某個項目的組長這種角色時,省略建立角色這一個步驟,使角色不至於過多。</p> <p>b) <strong>實例中</strong>:指定某個項目的組長,把組長權指定給某我的。</p> <p><strong> </strong></p> <p><strong>針對職位、項目組:</strong></p> <p>若是用添加新員工,員工調換職位、項目組,知足了員工會自動繼承所在職位、項目組的權限,不須要從新分配權限的功能。</p> <p><strong>用戶管理</strong></p> <p>用戶能夠屬於某一個或多個用戶組,能夠經過對用戶組受權,來對組中的全部用戶進行權限的授予。一個用戶能夠屬於多個項目組,或擔任多個職位。</p> <p><strong>受權管理</strong></p> <p>將一個基本權限或角色授予用戶或用戶組,使用戶或用戶組擁有授予權限的字符串,若是角色、職位、項目中存在相同的基本權限,則取其中的一個;如脫離角色、職位、項目組,只是取消用戶或用戶組的中此角色、職位、項目組所授予的權限。用戶所擁有的權限是全部途徑授予權限的集合。管理員用戶能夠查看每一個用戶的最終權限列表。</p> <p><strong>權限管理</strong></p> <p>基本操做權限與權限組(基本操做權限的集合)的管理。<br><img src="https://img2018.cnblogs.com/blog/1112483/201908/1112483-20190830150952885-415686304.png" alt="oa" height="411" width="616"></p> <p> </p> <p> </p> <p>物理數據模型圖以下:</p> <p><img src="https://img2018.cnblogs.com/blog/1112483/201908/1112483-20190830151010772-1886767697.png" alt="oa2" height="545" width="560"></p> <p> </p> <p>根據以上設計思想,權限管理總共須要如下基本表:</p> <p>tb_User:用戶信息基本表;</p> <p>tb_Department:部門表;</p> <p>tb_Company:公司表;</p> <p>tb_Module:系統模塊表;</p> <p>tb_Action:系統中全部操做的動做表;</p> <p>tb_Permit:由tb_Module與tb_Action兩表結合產生的系統基本權限表;</p> <p>tb_Permit_Group:權限組表,將一模塊的中的全部權限劃分一個權限組中,能夠經過權限組授予用戶權限;</p> <p>tb_Role:角色表,基本權限的集合。無上級與下級之分;</p> <p>tb_Position:職位表,有上級與下級之分;</p> <p>tb_Project:項目組表,</p> <p>tb_Role_Permit:角色受權表;</p> <p>tb_Postion_Permit:職位受權表;</p> <p>tb_Project_Permit:項目受權表;</p> <p>tb_Project_User:項目成員表,IsLead字段表明此成員爲項目組長;</p> <p>tb_Postion_User:職位成員表;</p> <p>tb_User_Permit:用戶受權表,用戶ID與角色、職位、項目及直接授予的權限串表;</p> <p><strong>權限的產生:</strong></p> <p>由tb_Module中的ModuleCode與tb_Action中的ActionCode組成</p> <p>權限代碼PermitCode=ModuleCode+ActionCode。</p> <p>實例:ModuleCode=0101,ActionCode=01,則PermitCode=010101。</p> <p>權限值則有ModuleValue與ActionCode組合而成,採用下劃線來鏈接。</p> <p>實例:ModuleValue=Sys_User,ActionValue=AdD,PermitValue= Sys_User_Add</p> <p><strong>權限組:</strong></p> <p> 包括一組同一模塊下的權限的組合,如管理用戶包括基本的權限:添加、刪除、修改、查看等,將這些組合起來構成一個用戶組——「用戶管理」權限組。其它相似。只是爲了更方便的查看系統權限與權限的分配。</p> <p> 實例:如管理用戶的權限代碼爲010101à查看用戶,010102à添加用戶,010103à刪除用戶,010104à修改用戶,010105à審覈用戶等,將這些基本權限組合起來一個集合而構成了「用戶管理」權限組。</p> <p>角色、職位、項目:</p> <p> 也就是按特定的須要劃分一種權限的集合。使用角色受權表、職位受權表、項目受權表來實現。受權表中存放的是權限代碼PermitCode,而不是權限組的GroupCode代碼。</p> <p>用戶受權:</p> <p> 由用戶受權表來實現,用戶受權表中的RoleCode、PositionCode、ProjectCode分別是角色表中RoleCode組成的串、職位表PositionCode組成的串、ProjectCode組成的串。與角色受權表中的角色代碼RoleCode、職位受權表中PositionCode、項目受權表中的ProjectCode不對應(不是主表與從表之間外鍵關係)。</p> <p> 從而可以實現了一個用戶能夠擁有多個角色、多個職位、多個項目的狀況。</p> <p>用戶受權表中的PermitCode爲直接受權的權限代碼串,直接給用戶分配權限。</p> <p>實例:</p> <p>用戶ID爲UserId=1的用戶權限受權表的記錄爲:</p> <p>RoleCode=001,003 </p> <p>PostionCode = 001,002</p> <p>ProjectCode=001,005 </p> <p>PermitCode = 010101,020102</p> <p>代表此用戶擁有兩個角色,代碼爲001和003,並繼承這兩個角色的權限;</p> <p>擔任兩個職位,代碼爲001與002,並繼承兩個職位的權限;</p> <p>屬於兩個項目組中的成員,項目代碼爲001與005,並繼承兩個項目中的權限。<br> 直接指定給用戶的權限爲010101與010102這兩個權限代碼的權限</p> <p><strong>用戶權限字符串:</strong></p> <p>根據用戶受權表的角色代碼、職位代碼、項目代碼獲得權限字符串及表中直接分配的權限字符串組合成一個用戶的全部權限字符串集合。</p> </div> 原文地址:https://blog.csdn.net/u013630349/article/details/51733749 </div>html