【问题标题】:RBAC in Yii, Guest not authorizedYii 中的 RBAC,访客未授权
【发布时间】: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,$userIdnull,而$assignments是一个空数组。因此,我不能授权来宾用户执行任何操作(除非声明 allowedActions())

我做错了什么?

【问题讨论】:

  • 不完全确定这是否相关,但我强烈建议避免访客角色检查。如果它对客人开放而不是对所有人开放,那么我通常会丢失 checkAccess() 调用。为什么?见here

标签: yii rights rbac


【解决方案1】:

确保将 Guest 添加到配置中的 defaultRoles。还要确保 Guest 角色有一个 bizRule,它的表达式为

return Yii::app()->user->isGuest

【讨论】:

  • 谢谢。我对 bizrule 进行了一些编辑,使其真正起作用。
  • return Yii::app()->user->isGuest;
  • 其实为Guest用户实现bizrule,继承是行不通的。即访客-> 已验证。通过删除规则并将 Guest 保留在 defaultRoles 中,我得到了我想要的结果。我认为:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 2014-04-26
  • 2018-12-01
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多