2013-02-19 2 views
0

저는 여기에 지침 (http://www.yiiframework.com/doc/guide/1.1/en/topics.auth)을 따라 DB 기반 인증 및 Yii 사용자를 추가했습니다. 사용자 테이블에 정의 된 사용자로 로그인 할 수 있지만 관리자로 로그인 할 수 없습니다. 나는 사용자 ID 1에 키 itemName에 '관리자'내 authassignment 테이블에 한 행을 볼 수 있습니다 - 로그인을 사용하여 사용자의 메신저입니다Yii 관리자 추가

내 authManager은 다음과 같습니다.

'authManager'=>array(
    'class'=>'CDbAuthManager', 
    'connectionID'=>'db', 
    'defaultRoles'=>array('authenticated', 'admin'), 
), 

그리고 사용중인 특정 컨트롤러에 대한 액세스 규칙은 다음과 같습니다.

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

'admin'작업을 사용하면 403 오류가 발생합니다. 이 문제를 해결할 수없는 것 같습니다. 어떤 제안?

편집 : 그래서 관리자 authitem의하여 BizRule이 return Yii::app()->user->name === "admin"; 것을 알고, 내가 '관리'에 대한 사용자의 사용자 이름을 변경하고 물론했다. 어쨌든 authassignment 테이블의 관리자가 관리자로 로그인하도록 bizrule을 변경하려면 무엇이 필요합니까?

답변

1

당신은 accessRules에 roles를 지정 내가 볼 http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#access-control-filterhttp://www.yiiframework.com/doc/api/1.1/CAccessRule#roles-detail

class PostController extends CController 
{ 
    ...... 
    public function accessRules() 
    { 
     return array(
      array('allow', 
       'actions'=>array('admin'), 
       'roles'=>array('admin'), 
      ), 
     ); 
    } 
} 
+0

볼 수 있습니다. 그래서 'users'=> array ('admin'), accessRules()의 일부는 허용 된 사용자 이름의 목록이라는 것입니다. – scifirocket

+0

네, 맞습니다. 또한 몇 가지 다른 기준이 있습니다. 'ips' 또는'expression'. – schmunk