1. 程式人生 > >thinkphp整合系列之rbac的升級版auth許可權管理系統demo

thinkphp整合系列之rbac的升級版auth許可權管理系統demo

許可權管理基本是作為網站的標配了;

除非是像部落格這類個人使用的;否則許可權管理的重要性不言而喻;

今個就來寫寫auth許可權管理;

thinkphp已經內建了auth許可權類位於:/ThinkPHP/Library/Think/Auth.class.php

執行裡面的sql生成3張表auth_rule、auth_group、auth_group_access;

然後自己再建一張users表;當然起其他的名字也是可以的;不過是需要在配置項中說明;

先對各表的作用簡單介紹;

users:使用者表;這個不廢話;

auth_group:使用者組表;比如說超級管理員組、普通管理員組、編輯等等;同時記錄每個管理組有哪些許可權;

auth_group_access:使用者、群組關聯表;比如說使用者1屬於超級管理員、使用者2屬於普通管理員和編輯;

auth_rule:許可權表;具體的每條許可權是什麼;

如果還沒看過許可權管理;那建議先看原始碼;透徹學習一樣東西;最好的方法就是研究原始碼;

這裡重點不是要講auth的原理;而是要給一個auth的demo;

1:先下載專案並安裝;

完成後分別點超級管理員登入和文章管理員登入;

你會發現他們的許可權是不同的;看到的後臺選單是不一樣的;

白俊遙部落格

2:選單管理

白俊遙部落格

為了控制每種管理員都能看到那些選單;所以要有選單的管理;

操作的是demo中的admin_nav表

3:許可權管理

白俊遙部落格

具體的每項許可權的名稱和內容;我這裡一般都是和選單對應的;

但是會比選單管理多出一些;對比兩張圖即可看出來;多出來的一般都是些對選單的增刪改;

操作的是demo中的auth_rule表;

4:使用者組管理

白俊遙部落格

這裡就是增加管理組;併為每個管理組分配許可權了;選中的就表示有許可權看到或者操作了;

白俊遙部落格

5:管理員列表

白俊遙部落格

把所有的管理員都列出來;可以新增管理員或者修改管理員的管理組;

白俊遙部落格

當構建好這樣一個結構後;許可權管理簡單其實只需要AdminBaseController.class.php中如下一段程式碼就完成了;

/Application/Common/Controller/AdminBaseController.class.php

$auth=new \Think\Auth();
$rule_name=MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME;
$result=$auth->check($rule_name,$_SESSION['user']['id']);
if(!$result){
    $this->error('您沒有許可權訪問');
}

這也是在 thinkphp的目錄結構設計經驗總結  中講述 /Application/Common/Controller中建各種BaseController的原因;

本文為白俊遙原創文章,轉載無需和我聯絡,但請註明來自白俊遙部落格http://www.baijunyao.com