2014-09-29 27 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'), 
     ),