我正在尝试实现我的第一个 RBAC 系统:
我要讲这部分:
在官方文档中,他们有一个用户名示例:
$auth->assign('adminRole', 'userA');
$auth->assign('adminRole', 'userB');
但是,我确实发现,就我而言,ID 会起作用。
$auth->assign('adminRole', '8');
$auth->assign('adminRole', '9');
为什么 ID 有效,而不是用户名?我推测这是因为在某个地方,我们已经覆盖getId()
了UserIdentity
.
但是,在继续关注文档和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]
,现在我很困惑。
那是什么身份证?我认为是我的用户数据库表的主键。
但是 CWebUser 如何知道我的用户数据库表(称为tbl_site_user
)顺便说一句。
我拥有的唯一配置与用户相关,授权是这样的,在我的主配置文件中:
'authManager'=>array(
'class'=>'CDbAuthManager',
'connectionID'=>'db',
),
Yii 在$auth->assign
第二个参数中是从哪里得到 ID 的?