【Thinkphp 5】auth權限設置以及實現


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        }

 

最終展示;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM