phprbac許可權管理
㈠ thinkphp 3.2.3 rbac 超級管理員可登錄 其他提示沒有許可權
你要在資料庫中給登錄的用戶添加許可權的,沒許可權當然不能訪問了。這個RBAC的原理是先判斷是不是超級管理員,如果是的話就跳過許可權認證的,所以就算沒配置你管理員的那個用戶的許可權他也能訪問的,其他用戶向你的數據表裡加許可權就行了
㈡ php用戶許可權分配界面
說一下我的思路(RBAC 模式),供你參考,郵箱不發了,由於資料庫需要保密,截圖也不貼了。
你在左側導航欄做三個菜單項,分別是:
1. 用戶管理
2. 角色管理
3. 許可權管理
其中 1 和 2 給管理員操作,管理員可以對其進行增刪改查等操作;3 由軟體開發者操作,不能分配給管理員;普通用戶對 1、2、3 都無權操作。
許可權管理界面,軟體開發者可以對各種許可權進行增刪改查;
角色管理界面,管理員進去後可以對角色進行增冊改查操作;具體可以這樣安排界面,右欄主區分成上中下三塊,上面這塊提供添加及查詢操作,中間塊顯示查詢結果,下面這塊查詢結果中某條記錄的明細。 增加按鈕點擊後,在明細區出現填寫表單,具體需要填哪些內容由開發者定,一般角色名為必填項,然後同時在右邊給出一個選擇許可權的列表,提供復選框讓管理員為角色勾選分配許可權;
用戶管理界面跟角色界面類似,只是管理員在創建用戶時是勾選角色而不是許可權。
大體思路就是這樣。
(PS: 資料庫中當然要先設計好用戶表、角色表、許可權表、用戶角色關聯表、角色許可權關聯表等等)
㈢ ThinkPHP中RBAC許可權控制求助
許可權配置文件:
//超級管理員
'RBAC_SUPERADMIN' => 'admin', //超級管理名稱
'ADMIN_AUTH_KEY' => 'superadmin', //超級管理識別
'USER_AUTH_ON' => true, //開啟驗證
'USER_AUTH_TYPE' => 1, //驗證類型(1登錄驗證,2實時驗證)
'USER_AUTH_KEY' => 'uid', //用戶認證識別號
'NOT_AUTH_MODULE' => 'User', //不驗證的控制器
'NOT_AUTH_ACTION' => '',//不驗證的action
'RBAC_ROLE_TABLE' => 'lx_role', //角色表名稱
'RBAC_USER_TABLE' => 'lx_role_user', //用戶關聯表
'RBAC_ACCESS_TABLE' => 'lx_access', //許可權表
'RBAC_NODE_TABLE' => 'lx_node', //節點表
復制代碼
test用戶給的許可權:
Index控制器的index方法允許
Baoji控制器的所有方法允許訪問
但當我登錄該用戶點擊baoji控制器下的remark時 報無許可權 求高手提點提點....
import('ORG.Util.RBAC');
RBAC::saveAccessList();
p($_SESSION);
復制代碼
下面是結果
Array
(
[verify] =>
[uid] => 5
[username] => test
[last_login_time] => 1376992491
[last_login_ip] => 127.0.0.1
[_ACCESS_LIST] => Array
(
[DEFAULT] => Array
(
[INDEX] => Array
(
[INDEX] => 31
)
[BAOJI] => Array
(
[INDEX] => 40
[REMARK] => 41
[VIEW] => 42
[SUBMIT] => 43
)
)
)
)
復制代碼
這是許可權判斷的代碼
$notAuth=in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE'))) ||
in_array(ACTION_NAME, explode(',', C('NOT_AUTH_ACTION')));
if(C('USER_AUTH_ON') and !$notAuth){
import('ORG.Util.RBAC');
RBAC::AccessDecision()||$this->error('沒有許可權');
}
㈣ thinkphp的auth許可權和rbac有什麼區別
相同點:
1.兩種都是基於角色許可權控制
2.都是同一個用戶可屬於多個角色或用戶組
不同點:
Rbac:
1.Rbac是基於節點控制,根據3級節點,mole,controller,action,節點類似與樹形結構,3級節點間相互有關聯
2.表關系:用戶表->用戶角色關聯表->角色表->角色節點關聯表->節點表
3.根據3級節點控制,粒度到操作action,每個節點為單一的模塊,控制器或操作
Auth:
1.Auth是基於規則控制,定製規則和條件表達式 ,每一條規則都是獨立的
2.表關系:用戶表->用戶和用戶組關聯表->用戶組表->規則表
3.根據規則控制,可自由定製不同的規則,非常自由,同一個規則內可以定製多個不同節點(中間的關系:OR AND)
4.可定製規則表達式,比如定製積分表達式
想法和問題:
Auth:
1.Auth驗證多條規則時條件表達式不起效果
2.Auth官方例子只說一個根據積分的規則,假如我規則"Admin/Goods/goodsList,Admin/Goods/goodsDel"我
能不能定義這裡面的某些ID所屬角色操作許可權的規則表達式,而這些所屬角色id是goods表裡的某個欄位,可能所屬的角色是多個不同的角色?
3.Auth不支持"Admin/*"泛解析,因為他每一條規則都是獨立的
4.對菜單,頁面,按鈕類的顯示使用Auth會必Rbac更好更方便
Rbac:
1.新手配置Rbac的時候經常出現 Rbac $_SESSION['_access_list'] 獲取不到的問題,因為Rbac是使用ThinkPHP的底層DB引擎DSN連接資料庫,需要配置資料庫鏈接和5個表的關系,欄位名和表名不能出現問題
2.允許完成"Admin/*"類型的泛解析,比如這里直接定製一個Admin模塊的節點,不要下級節點就可以了
通用:
1.不管是Rbac的角色表或者Auth裡面的用戶組表也好,都可以擴展,比如對角色或用戶組進行多層分級
2.Rbac的節點和Auth的規則都可以進行分級,比如前端功能許可權,後端功能許可權,後端某個功能模塊許可權等等
3.上面兩個東西都不能應用到許可權管控之中去,比如Rbac不能分享上級角色許可權,Auth用戶組也不能,但是能更好的管理和更加流程化的操作.
㈤ php許可權管理如何實現
我得做法是,用形如:
修改文章,1,刪除文章,1,新增文章,1
這樣的字元串來保存許可權值
讀取後explode為數組,需要校驗許可權的時候,用
if($array["修改文章"])
判斷是否有許可權。