溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

發(fā)布時(shí)間:2021-01-16 11:23:11 來源:億速云 閱讀:372 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

1.將auth類下載好 放置目錄: extend\auth\auth.php

2.將類中的SQL語(yǔ)句執(zhí)行,可以在數(shù)據(jù)庫(kù)中創(chuàng)建3張表 auth_group(用戶組表)           auth_rule(權(quán)限規(guī)則表)           auth_group_access(用戶與用戶組關(guān)聯(lián)表)

3.我想給規(guī)則 添加一個(gè)級(jí)別關(guān)系(類似于無(wú)限極分類)   auth_rule(權(quán)限規(guī)則表) 中添加3個(gè)字段  pid(父級(jí)id ,0為頂級(jí)權(quán)限)   level(級(jí)別)    sort(排序),如下圖

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

4,首先 自己創(chuàng)建管理員表,比如叫admin表,增刪改查 自己去正常設(shè)計(jì),group字段為所屬用戶組

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

5.auth_group用戶組的 增刪改查 也自己去制作一下,id,用戶組名稱,狀態(tài)(開啟,或者關(guān)閉),規(guī)則(所對(duì)應(yīng)的是規(guī)則表的id)

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

6.auth_rule規(guī)則表 增刪改查 也自己去制作一下,id,name(控制器/方法),title(規(guī)則名稱 )  status狀態(tài)(開啟,或者關(guān)閉),

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

7. 在添加用戶的時(shí)候 給用戶選擇 所屬用戶組, uid(對(duì)應(yīng)的是用戶id)   group_id(對(duì)應(yīng)的是用戶所屬用戶組的id),這樣就關(guān)聯(lián)起來了

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

8.把會(huì)員登陸功能做好,登陸成功設(shè)置session('id'),將當(dāng)前登陸會(huì)員ID存在session中

9.最關(guān)鍵的的一步,就是使用auth類進(jìn)行驗(yàn)證,在common.php這個(gè)公共頁(yè)面中 使用

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


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

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




       }

最終展示;

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法

以上是“Thinkphp5中auth權(quán)限設(shè)置以及實(shí)現(xiàn)的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI