Thinkphp5 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這個公共頁面中 使用

<?php
namespace app\admin\controller;
use think\Controller;
use think\Request;
use auth\Auth; //引入suth類
class Common extends Controller
{
    public function _initialize(){
      //初始化判斷用戶是否已經登陸
      if(!session('uname')){
          $this->error('請先登陸系統!','login/index');
        }


        //獲得當前頁面的控制器 / 方法
       $request=Request::instance();
       $moudle=$request->module(); //獲取當前控制器名稱
       $con=$request->controller(); //獲取當前控制器名稱
       $action=$request->action();  //獲取當前方法名稱
       $this->assign(array(
               'con'=>$con,
               'action'=>$action,
       ));

       $rules=$con.'/'.$action;  //組合  控制器/方法
       $auth=new Auth(); //實例化auth類
       $notCheck=array('Index/index');  //都可以訪問的頁面
       if(session('uid')!=1){  //不是超級管理員才進行權限判斷
          if(!in_array($rules,$notCheck)){  // 是否在開放權限里面
              if(!$auth->check($rules,session('uid'))){   // 第一個參數  控制/方法   第二個參數:當前登陸會員的id
                 $this->error('沒有權限','index/index');
               };
           }
        }




       }

最終展示:

 

 

 

 

 

 轉載:https://mp.weixin.qq.com/s/Pcieglz1WS2nK6YrHZO36Q


免責聲明!

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



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