1、簡介程序員
什麼是rbac ?yii
rbac是就是基於角色的訪問控制。模塊化
yii提供一套基礎的底層接口,咱們知道,rbac經歷好幾個階段,從rbac0到rbac3,從基礎的用戶、角色、權限,到動態的rbac處理模式,再到如今的權限繼承,解決複雜的多頁面元素權限分配。spa
總而言之,rbac有三個特性。繼承
1. 基礎:接口
角色、權限、用戶 三大致系。路由
2. 權限繼承:io
角色派生原則,一個角色能夠派生多個低權限角色。例如:總經理 =》經理、副經理、營運等基礎
3. 權限分配:route
權限分配必須從基礎權限到高級權限,若是想擁有高級權限必須現擁有基礎權限。例如:一個系統,我想擁有全部的權限。首先,咱們必須現擁有查看全部菜單和子菜單的權限,而後,在擁有頁面元素操做的權限,即增、刪、改、查及其餘。
yii提供的接口,實現了rbac的基礎功能,路由的控制、頁面元素和菜單的顯示、隱藏等。做爲合格的程序員,思想的層次有時候決定你的技術層次。由於yii提供了基礎,那麼咱們能夠在它的接口上結合具體項目需求去拓展rbac的功能。
具體以下:
我須要一個菜單表,來存儲的模塊,以垂直分表 的形式,實現無限極目錄。
表字段: name(名稱:primary key) route(路由) pid(父ID) ...
此表以三級聯動,動態的添加權限、角色,記錄模塊的層次等級,菜單=》子菜單=》功能、頁面元素。
例如:
權限管理 僞路由:permission/index 父ID 0
添加權限: 權限:permission/index 類型: 1
添加角色: 權限管理 類型 : 2
綁定權限: 權限管理 permission/index
角色分配: 角色: 總經理 權限: 權限管理
用戶權限: admin 總經理
也許你們可能看不懂,可是若是熟悉yii底層rbac基礎接口,就容易理解啦,由於yii提供了現有的一套完善的rbac權限邏輯,因此,咱們只須要在其基礎上去拓展。 這裏須要在添加一個數據表格role表,用於客戶端角色分配,客戶端只須要去建立角色,並分配好角色權限,即可綁定用戶。這裏存在一個問題,就是剛開始說的模塊化系統中,功能按鈕過多問題。因此,咱們一個在一個高級角色的基礎上,去派生用戶所須要的角色。
例如:
總經理
拿到總經理的權限,在其基礎上去,分配經理、副經理的角色。分配用戶。