2

你好,我想了解最好的方法是什么,如果有一个简单的例子怎么办,因为我不能指定 whitch rol 给女巫的人

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('*'),
        ),
    );
}
4

2 回答 2

3

您可以根据用户角色指定,例如您希望仅显示编辑用户功能的编辑器和发布者您只能提供阻止和取消阻止用户的访问权限等。例如:我们在项目中使用了以下代码

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'),
        ),
于 2014-09-29T11:46:55.807 回答
0

试试这个 Yii 扩展,可能会对你有所帮助 -

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

或者从 - Yii 框架中获得一个想法:基于角色的访问控制

于 2014-09-29T14:15:52.083 回答