2013-02-19 146 views
0

我一直在按照此處的說明(http://www.yiiframework.com/doc/guide/1.1/en/topics.auth)添加基於數據庫的授權和Yii用戶。我可以使用用戶表中定義的用戶登錄,但我無法以管理員身份登錄。我可以看到我的authassignment表1排,用鑰匙用戶ID 1 ITEMNAME「管理員」 - 這是用來登錄用戶的IMYii添加管理員

我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錯誤。我似乎無法解決這個問題。有什麼建議麼?

編輯: 所以明知爲admin authitem的bizrule是return Yii::app()->user->name === "admin";,我改變了用戶對「管理員」的用戶名和它當然工作。我需要更改bizrule來讓管理員在authassignment表中以管理員身份登錄?

回答

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'=>數組('admin'),屬於accessRules()的部分就是它所說的,允許的用戶名列表正確嗎? – scifirocket 2013-02-19 14:30:44

+0

是的,正確的。還有其他幾個標準,例如。 'ips'或'expression'。 – schmunk 2013-02-19 20:26:25