Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii框架下RBAC的实现_Yii - Fatal编程技术网

Yii框架下RBAC的实现

Yii框架下RBAC的实现,yii,Yii,我正在尝试在我的Yii web应用程序中应用简单的分层用户结构(例如:超级管理员、管理员、用户)。我是否可以使用Yii的默认访问控制来实现它?是否需要在Rbac中实现它。您可以使用Yii的默认访问控制来实现这一点 不使用RBAC时,我通常会在ACL用户数据库中创建一个字段,该字段包含Admin、Super Admin等值,然后登录后,我将其分配给componetnst/UserIdentity.php中的Yii::app()-User会话变量“Notice$this->setState('acc

我正在尝试在我的Yii web应用程序中应用简单的分层用户结构(例如:超级管理员、管理员、用户)。我是否可以使用Yii的默认访问控制来实现它?是否需要在Rbac中实现它。

您可以使用Yii的默认访问控制来实现这一点

不使用RBAC时,我通常会在ACL用户数据库中创建一个字段,该字段包含Admin、Super Admin等值,然后登录后,我将其分配给componetnst/UserIdentity.php中的Yii::app()-User会话变量“Notice
$this->setState('accessCode',$User->accessCode);

不,在我的控制器里,我有

public function accessRules()
    {
        return array(
            array('allow',  
                'actions'=>array('admin'),
                'expression'=>'Yii::app()->user->accessCode & 8',
            ),
            array('allow', 
                'actions'=>array('create','update'),
                'expression'=>'Yii::app()->user->accessCode & 1',
            ),
            array('allow', 
                'actions'=>array('view'),
                'expression'=>'Yii::app()->user->accessCode & 4',
            ),
                        array('allow', 
                'actions'=>array('delete'),
                'expression'=>'Yii::app()->user->accessCode & 2',
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }
请注意,表达式的工作方式类似于if语句


我希望这有帮助

在会话中存储它的方法时要小心:如果你想为用户撤销它,而他仍然登录,在实际会话被销毁之前,他仍然拥有权限。@Blizz-非常有效,这一切都取决于应用程序的类型
public function accessRules()
    {
        return array(
            array('allow',  
                'actions'=>array('admin'),
                'expression'=>'Yii::app()->user->accessCode & 8',
            ),
            array('allow', 
                'actions'=>array('create','update'),
                'expression'=>'Yii::app()->user->accessCode & 1',
            ),
            array('allow', 
                'actions'=>array('view'),
                'expression'=>'Yii::app()->user->accessCode & 4',
            ),
                        array('allow', 
                'actions'=>array('delete'),
                'expression'=>'Yii::app()->user->accessCode & 2',
            ),
            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }