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