權限管理基本是做爲網站的標配了;php
除非是像博客這類我的使用的;不然權限管理的重要性不言而喻;git
今個就來寫寫auth權限管理;sql
thinkphp已經內置了auth權限類位於:/ThinkPHP/Library/Think/Auth.class.phpthinkphp
執行裏面的sql生成3張表auth_rule、auth_group、auth_group_access;學習
而後本身再建一張users表;固然起其餘的名字也是能夠的;不過是須要在配置項中說明;網站
先對各表的做用簡單介紹;this
users:用戶表;這個不廢話;.net
auth_group:用戶組表;好比說超級管理員組、普通管理員組、編輯等等;同時記錄每一個管理組有哪些權限;設計
auth_group_access:用戶、羣組關聯表;好比說用戶1屬於超級管理員、用戶2屬於普通管理員和編輯;get
auth_rule:權限表;具體的每條權限是什麼;
若是還沒看過權限管理;那建議先看源代碼;透徹學習同樣東西;最好的方法就是研究源代碼;
這裏重點不是要講auth的原理;而是要給一個auth的demo;
git源代碼:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin
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