【发布时间】:2013-12-25 16:16:56
【问题描述】:
这个问题可能是基本的,以前有人问过,但我找不到。 我正在使用 Yii,但在区分具有操作访问权限的用户时遇到了麻烦。 我有一个名为 tbl_user 的表,其中包含用户名、密码和角色等字段。当用户登录时,系统会根据他/她的角色设置 loginAs 状态,例如:
$role = "Super User"; //assume we get this role by querying the tbl_user
Yii::app()->user->setState("loginAs", $role)
在一个控制器中,有 4 个动作,actionIndex、actionCreate、actionUpdate 和 actionDelete。如果超级用户登录,这 4 个操作将可用。但是如果另一个具有不同角色的用户登录,例如“管理员”,除了 actionDelete 之外的所有用户都将可用。我试过这个:
public function accessRules()
{
return array(
array('allow',
'actions'=>array('index','create','update','delete'),
'expression'=>'Yii::app()->user->getState("loginAs")=="Super User"'
),
array('allow',
'actions'=>array('index','create','update'),
'expression'=>'Yii::app()->user->getState("loginAs")=="Administrator"',
),
);
}
已编辑
上面的代码不起作用。当我以管理员身份登录时,所有 4 个操作都出现错误 403。 管理员应该能够访问除“删除”之外的所有内容。还有其他方法吗?任何帮助将不胜感激。
【问题讨论】:
-
echo Yii::app()->user->getState("loginAs");并检查值。