【Thinkphp 5】auth權限設置以及實現
阿新 • • 發佈:2018-02-05
new bsp ssi 登陸 public check ces 最終 ont
1.將auth類下載好 放置目錄: extend\auth\auth.php
2.將類中的SQL語句執行,可以在數據庫中創建3張表 auth_group(用戶組表) auth_rule(權限規則表) auth_group_access(用戶與用戶組關聯表)
3.我想給規則 添加一個級別關系(類似於無限極分類) auth_rule(權限規則表) 中添加3個字段 pid(父級id ,0為頂級權限) level(級別) sort(排序),如下圖
4,首先 自己創建管理員表,比如叫admin表,增刪改查 自己去正常設計,group字段為所屬用戶組
5.auth_group用戶組的 增刪改查 也自己去制作一下,id,用戶組名稱,狀態(開啟,或者關閉),規則(所對應的是規則表的id)
6.auth_rule規則表 增刪改查 也自己去制作一下,id,name(控制器/方法),title(規則名稱 ) status狀態(開啟,或者關閉),
7. 在添加用戶的時候 給用戶選擇 所屬用戶組, uid(對應的是用戶id) group_id(對應的是用戶所屬用戶組的id),這樣就關聯起來了
8.把會員登陸功能做好,登陸成功設置session(‘id‘),將當前登陸會員ID存在session中
9.最關鍵的的一步,就是使用auth類進行驗證,在common.php這個公共頁面中 使用
1 <?php 2 namespace app\admin\controller; 3 use think\Controller; 4 use think\Request; 5 use auth\Auth; //引入suth類 6 class Common extends Controller 7 { 8 public function _initialize(){ 9 //初始化判斷用戶是否已經登陸 10 if(!session(‘uname‘)){ 11 $this->error(‘請先登陸系統!‘,‘login/index‘);12 } 13 14 15 //獲得當前頁面的控制器 / 方法 16 $request=Request::instance(); 17 $moudle=$request->module(); //獲取當前控制器名稱 18 $con=$request->controller(); //獲取當前控制器名稱 19 $action=$request->action(); //獲取當前方法名稱 20 $this->assign(array( 21 ‘con‘=>$con, 22 ‘action‘=>$action, 23 )); 24 25 $rules=$con.‘/‘.$action; //組合 控制器/方法 26 $auth=new Auth(); //實例化auth類 27 $notCheck=array(‘Index/index‘); //都可以訪問的頁面 28 if(session(‘uid‘)!=1){ //不是超級管理員才進行權限判斷 29 if(!in_array($rules,$notCheck)){ // 是否在開放權限裏面 30 if(!$auth->check($rules,session(‘uid‘))){ // 第一個參數 控制/方法 第二個參數:當前登陸會員的id 31 $this->error(‘沒有權限‘,‘index/index‘); 32 }; 33 } 34 } 35 36 37 38 39 }
最終展示;
【Thinkphp 5】auth權限設置以及實現