扩展CWebUser并重写Yii accessControl

Kir*_*Kir 2 php yii

我最近扩展了CWebUser类,现在它有这样有用的方法:

Yii::app()->user->isAdmin;
Yii::app()->user->isTeacher;
Yii::app()->user->isStudent;
Run Code Online (Sandbox Code Playgroud)

现在有accessControl过滤器的麻烦.

之前,为了只允许管理员访问,我用过:

public function accessRules()
    {
        return array(
            array('allow',
                'actions'=>array('index','update', 'create', 'delete'),
                'users'=>array('admin'),
            ),
            array('deny',
                'users'=>array('*'),
            ),
        );
    } 
Run Code Online (Sandbox Code Playgroud)

如何重写accessRules只为具有Yii :: app() - > user-> isAdmin属性的用户委派访问权限?

Bli*_*izz 6

您可以在配置中添加选项"表达式".通常它会获得一个"$ user"作为参数.所以你可以这样做:

array('allow',
   'actions'=>array('index','update', 'create', 'delete'),
   'expression'=> '$user->isAdmin',
),
Run Code Online (Sandbox Code Playgroud)

请注意,我没有测试过这个,但我认为它会起作用.

看看这里的休息.

  • 'expression'=> Yii :: app() - > user-> isAdmin || 我认为Yii :: app() - > user-> isTeacher等也适用 (2认同)