真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ThinkPHP項目組的權(quán)限怎么設(shè)置

本文小編為大家詳細(xì)介紹“ThinkPHP項目組的權(quán)限怎么設(shè)置”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“ThinkPHP項目組的權(quán)限怎么設(shè)置”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

站在用戶的角度思考問題,與客戶深入溝通,找到滿洲網(wǎng)站設(shè)計與滿洲網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋滿洲地區(qū)。

一、認(rèn)識ThinkPHP權(quán)限設(shè)置

權(quán)限設(shè)置是指為用戶分配操作權(quán)限,使其能夠按照權(quán)限范圍進(jìn)行操作。在ThinkPHP框架中,權(quán)限的設(shè)置可以通過RBAC(Role-Based Access Control,基于角色的訪問控制)方式實(shí)現(xiàn)。RBAC基于角色的訪問控制是指給用戶分配角色,而角色再分配權(quán)限的一種訪問控制模型。RBAC具備如下特點(diǎn):

  1. 將權(quán)限授權(quán)給角色,再將角色賦予用戶,方便管理;

  2. 用戶只需要擁有角色,就能擁有角色所擁有的所有權(quán)限;

  3. 系統(tǒng)易于擴(kuò)展和維護(hù),具有良好的可擴(kuò)展性;

  4. 實(shí)現(xiàn)了權(quán)限與業(yè)務(wù)邏輯分離,顯著提高了代碼復(fù)用率和訪問安全性。

二、基于RBAC的權(quán)限設(shè)置步驟

Step 1 創(chuàng)建權(quán)限表

  1. 在數(shù)據(jù)庫中創(chuàng)建一張權(quán)限表,包含字段id、name、title和status;

  2. id和name字段是主鍵和權(quán)限標(biāo)識;

  3. title字段是權(quán)限名稱;

  4. status字段是權(quán)限狀態(tài),1代表啟用,0代表禁用。

Step 2 創(chuàng)建角色表

  1. 在數(shù)據(jù)庫中創(chuàng)建一張角色表,包含字段id、name、title和status;

  2. id和name字段是主鍵和角色標(biāo)識;

  3. title字段是角色名稱;

  4. status字段是角色狀態(tài),1代表啟用,0代表禁用。

Step 3 創(chuàng)建用戶表

  1. 在數(shù)據(jù)庫中創(chuàng)建一張用戶表,包含字段id、username、password和status;

  2. id字段是主鍵;

  3. username是用戶名;

  4. password是密碼;

  5. status表示用戶狀態(tài),1代表啟用,0代表禁用。

Step 4 建立用戶角色關(guān)聯(lián)表

  1. 在數(shù)據(jù)庫中創(chuàng)建一張用戶角色關(guān)聯(lián)表,包含字段user_id和role_id;

  2. user_id是用戶標(biāo)識;

  3. role_id是角色標(biāo)識。

Step 5 建立角色權(quán)限關(guān)聯(lián)表

  1. 在數(shù)據(jù)庫中創(chuàng)建一張角色權(quán)限關(guān)聯(lián)表,包含字段role_id和rule_id;

  2. role_id是角色標(biāo)識;

  3. rule_id是權(quán)限標(biāo)識。

Step 6 實(shí)現(xiàn)權(quán)限控制

在ThinkPHP項目中,實(shí)現(xiàn)權(quán)限控制的方法如下:

  1. 在項目中定義公共控制器CommonController,該控制器可以實(shí)現(xiàn)對所有用戶的權(quán)限控制;

  2. 創(chuàng)建Auth類實(shí)現(xiàn)權(quán)限驗證;

  3. 在CommonController類中進(jìn)行權(quán)限控制,如下所示:

public function _initialize(){
    if(!authcheck()){

        }
    }

public function authcheck(){
    $auth=new Auth;
    if($auth->check(MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME,session('uid'))){
        return true;
    }else{
        return false;
    }
}
  1. 在Auth類中,實(shí)現(xiàn)了權(quán)限驗證的邏輯,如下所示:

class Auth {
    //檢查權(quán)限
    public function check($name, $uid){
        if(in_array($uid, C('AUTH_SUPER_ADMIN'))){
            return true;
        }
        $infos=M('user')->field('role_id')->where('id='.$uid)->find();
        $role_id=$infos['role_id'];
        $rules=M('access')->where('role_id='.$role_id)->select();
        foreach($rules as $v){
            $rule_ids[]=$v['rule_id'];
        }
        $rules=M('rule')->where('id in ('.implode(',',$rule_ids).')')->select();
        foreach($rules as $r){
            $urls[]=$r['name'];
        }
        if(in_array($name,$urls)){
            return true;
        }else{
            return false;
        }
    }
}

以上代碼實(shí)現(xiàn)的邏輯是為用戶的所有操作請求添加權(quán)限驗證。如果用戶請求的操作需要權(quán)限控制,則驗證器會首先檢查該用戶是否為超級管理員。如果用戶為超級管理員,則直接通過檢驗;如果用戶不是超級管理員,則根據(jù)用戶的角色I(xiàn)D(從用戶表中查詢)查找該角色所擁有的權(quán)限ID列表(從關(guān)聯(lián)表中查詢),然后根據(jù)權(quán)限ID列表查找對應(yīng)的權(quán)限名稱列表;如果請求的操作名稱在權(quán)限名稱列表之中,則通過驗證;反之,則權(quán)限驗證失敗。

讀到這里,這篇“ThinkPHP項目組的權(quán)限怎么設(shè)置”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享名稱:ThinkPHP項目組的權(quán)限怎么設(shè)置
瀏覽地址:http://weahome.cn/article/goigpe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部