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'); }; } } }
最終展示: