【发布时间】:2012-10-18 00:32:13
【问题描述】:
我正在尝试在 Yii 中实现 RBAC(使用权限模块)。
当尝试授权未经身份验证的用户(访客)时,CWebUser 调用 CDbAuthManager:
$access=Yii::app()->getAuthManager()->checkAccess($operation,$this->getId(),$params);
CDbAuthManager 然后尝试获取用户的 authassignments
$assignments=$this->getAuthAssignments($userId);
问题是,因为用户是Guest,$userId是null,而$assignments是一个空数组。因此,我不能授权来宾用户执行任何操作(除非声明 allowedActions())
我做错了什么?
【问题讨论】:
-
不完全确定这是否相关,但我强烈建议避免访客角色检查。如果它对客人开放而不是对所有人开放,那么我通常会丢失 checkAccess() 调用。为什么?见here