Yii中的RBAC,未经授权的客人

Yii中的RBAC,未经授权的客人,yii,rights,rbac,Yii,Rights,Rbac,我试图在Yii中实现RBAC(使用权限模块) 尝试授权未经身份验证的用户(来宾)时,CWebUser调用CDbAuthManager: $access=Yii::app()->getAuthManager()->checkAccess($operation,$this->getId(),$params); CDbAuthManager然后尝试获取用户的身份分配 $assignments=$this->getAuthAssignments($userId); 问题是,因

我试图在Yii中实现RBAC(使用权限模块)

尝试授权未经身份验证的用户(来宾)时,
CWebUser
调用
CDbAuthManager

$access=Yii::app()->getAuthManager()->checkAccess($operation,$this->getId(),$params);
CDbAuthManager
然后尝试获取用户的身份分配

$assignments=$this->getAuthAssignments($userId);
问题是,因为用户是来宾,
$userId
null
,而
$assignments
是空数组。因此,我无法授权来宾用户执行任何操作(除非声明allowedActions())


我做错了什么?

确保将Guest添加到配置中的defaultRoles中。还要确保来宾角色有一个包含表达式的bizRule

返回Yii::app()->user->isGuest


确保已将Guest添加到配置中的defaultRoles。还要确保来宾角色有一个包含表达式的bizRule

返回Yii::app()->user->isGuest


不完全确定这是否相关,但我强烈建议避免客人角色检查。如果它对来宾开放,而不是应该对所有人开放,那么我通常会丢失checkAccess()调用。为什么?我不完全确定这是否相关,但我强烈建议避免检查来宾角色。如果它对来宾开放,而不是应该对所有人开放,那么我通常会丢失checkAccess()调用。为什么?再见,谢谢。我稍微编辑了一下bizrule,这样它就可以实际工作了。
return Yii::app()->user->isGuest认证。通过删除规则,并将Guest保留在defaultRoles中,我得到了想要的结果。我想:)。谢谢。我稍微编辑了一下bizrule,这样它就可以实际工作了。
return Yii::app()->user->isGuest认证。通过删除规则,并将Guest保留在defaultRoles中,我得到了想要的结果。我想:)。