1. 程式人生 > >【Thinkphp 5】auth權限設置以及實現

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

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權限設置以及實現