2014-09-29 1 views
2

гип Я хочу понять, что это лучший Methode использовать и как, если есть простой Exemple, потому что я не могу указать рол ведьма дать ведьме PersonneСписки контроля доступа или на основе ролей контроля доступа в 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('*'), 
     ), 
    ); 
} 
+0

вы проверили документацию? http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#access-control-filter – Asped

+0

да, но я не понял:/ –

+0

Для получения дополнительной информации: http: //stackoverflow.com/questions/ 26051939/correct-password-is-not-accepted-in-yii-login/26052542 # 26052542 –

ответ

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'), 
     ), 
Смежные вопросы