【发布时间】:2014-11-02 22:14:23
【问题描述】:
我正在尝试实现我的第一个 RBAC 系统:
我正在进入这部分:
在官方文档中,他们有一个用户名示例:
$auth->assign('adminRole', 'userA');
$auth->assign('adminRole', 'userB');
但是,我确实发现,在我的情况下,ID 可以代替。
$auth->assign('adminRole', '8');
$auth->assign('adminRole', '9');
为什么是 ID 起作用,而不是用户名?我猜是因为在某个地方,我们已经从 UserIdentity 覆盖了 getId() 方法。
但是,在继续关注文档和 Yii 代码之后,我注意到 assign() 方法不接受 CUserIdentity 的子代,它使用 IWebUser 接口,反而。
然后我转到CWebUser,我注意到getId() 方法具有以下内容:
/**
* Returns a value that uniquely represents the user.
* @return mixed the unique identifier for the user. If null, it means the user is a guest.
*/
public function getId()
{
return $this->getState('__id');
}
我一直关注这个,最后我得到了$_SESSION[$key],现在我很困惑。
那是什么ID?我认为是我的用户数据库表的主键。
但是 CWebUser 是如何知道我的用户数据库表(称为tbl_site_user)的。
在我的主配置文件中,我拥有的唯一配置与用户相关,并且授权是这样的:
'authManager'=>array(
'class'=>'CDbAuthManager',
'connectionID'=>'db',
),
Yii 是从哪里得到$auth->assign第二个参数的 ID?
【问题讨论】:
标签: authentication yii rbac role-based-access-control