簡體   English   中英

yii中的訪問控制列表或基於角色的訪問控制

[英]Access Control Lists or Role-based access control in yii

嗨,我想了解什么是最好的方法,以及如何使用一個簡單的例子,因為我無法指定向女巫角色提供的抽筋

public function accessRules()
{
    return array(
        array('allow',  // allow authenticated  to perform 'index' and 'view' actions
            'actions'=>array('index','view'),
            'users'=>array('@'),
        ),
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),
        array('allow', // allow admin user to perform 'admin' and 'delete' actions
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

您可以基於用戶角色進行指定,例如對於您想要只顯示編輯用戶功能的編輯者,對於發布者,您只能提供阻止和取消阻止用戶的訪問權限等等。 例如:我們在項目中使用了以下代碼

public function accessRules()
    {
        if(isset(Yii::app()->user->role) && Yii::app()->user->role == "superadmin"){
            $arr = array('create','update','admin','delete','block','help','download','forgot');
        } elseif(isset(Yii::app()->user->role) && Yii::app()->user->role == "admin") {
            $arr = array('help','download','forgot');
        } elseif(isset(Yii::app()->user->role) && Yii::app()->user->role == "editor") {
            $arr = array('update');
        } elseif(isset(Yii::app()->user->role) && Yii::app()->user->role == "publisher") {
            $arr = array('block');
        } else {
            $arr = array('');
        }
        return array(
            array('allow', // allow admin user to perform 'admin' and 'delete' actions
                'actions'=>$arr,
                'users'=>array('@'),
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }

同樣,您只想向注冊用戶顯示一個頁面,而對注冊用戶和來賓用戶則顯示一些頁面。 我們可以在accessRules()函數中執行相同的操作

允許所有用戶

array('allow', 
            'actions'=>array('create','update'),
            'users'=>array('*'),
        ),

只允許注冊用戶

array('allow', 
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),

根據用戶名創建限制

array('allow',
            'actions'=>array('create','update'),
            'users'=>array('username1','username2'),
        ),

試試這個Yii擴展程序,可能會對您有幫助-

http://www.yiiframework.com/extension/rbam

或從-Yii框架中獲得想法:基於角色的訪問控制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM