2014-09-29 91 views
2

HY我想明白了什么叫最好梅索德使用和如何,如果有一个简单的为例,因为我不能指定whitch ROL给予巫婆personne基于角色的访问控制访问控制列表或警予

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

你检查的文件? http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#access-control-filter – Asped 2014-09-29 11:39:18

+0

是的,但我不明白:/ – 2014-09-29 11:48:18

+0

欲了解更多信息:http://stackoverflow.com/questions/ 26051939 /正确的密码不接受在yii登录/ 26052542#26052542 – 2014-10-01 06:01:43

回答

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'), 
     ),