我一直在使用我的Yii应用程序获得这种奇怪的体验。我创建了一个帐户“ admin ”,此管理员创建了一个名为“示例”的其他管理员帐户。现在示例已成功创建并作为管理员添加到自动分配表中。这是用户204是管理员的证据。
检查用户访问权限也证明示例帐户是管理员。但不知何故,当以示例登录时,访问某个控制器的管理功能会返回错误403,但是另一个管理员帐户 admin ,用户0可以正常访问它。这是控制器的访问规则。
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view','update'),
'users'=>array('*'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete','dynamicUnitName'),
'users'=>array('admin'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('create','update'),
'users'=>array('@'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
我的应用程序有什么问题,为什么这样做?
答案 0 :(得分:1)
您应该使用roles
代替users
。 users
包含用户的名称。有关更多信息,请查看Yii page on access control
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete','dynamicUnitName'),
'roles' => array("admin"),
),
答案 1 :(得分:0)
更改
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete','dynamicUnitName'),
'users'=>array('admin'),
),
要
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete','dynamicUnitName'),
'expression' => 'Yii::app()->user->role == "admin"',
),