0

我一直按照这里的说明 ( http://www.yiiframework.com/doc/guide/1.1/en/topics.auth ) 添加基于 DB 的授权和使用 Yii 的用户。我可以使用用户表中定义的用户登录,但我无法以管理员身份登录。我可以在我的 authassignment 表中看到 1 行,其中 itemname 为“admin”,其密钥为用户 id 1 - 这是我用来登录的用户。

我的 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('*'),
            ),
        );
    }

尝试使用“管理员”操作会导致 403 错误。我似乎无法解决这个问题。有什么建议么?

编辑: 所以知道 admin authitem 的 bizrule 是return Yii::app()->user->name === "admin";,我将用户的用户名更改为 'admin' 并且它当然有效。我需要更改 bizrule 以让 authassignment 表中的管理员以管理员身份登录吗?

4

1 回答 1

1

您可以roles在 accessRules 中指定,参见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'),
            ),
        );
    }
}
于 2013-02-19T10:45:30.073 回答