2013-02-19 143 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