最初の 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]
には混乱しています。
それは何のidですか?ユーザーデータベーステーブルの主キーだと思います。
しかし、CWebUser はどのようにして私のユーザー データベース テーブル (と呼ばれるtbl_site_user
) を知っているのでしょうか。
私が持っている唯一の構成はユーザーに関連しており、承認は私のメイン構成ファイルで次のとおりです。
'authManager'=>array(
'class'=>'CDbAuthManager',
'connectionID'=>'db',
),
Yii は$auth->assign
2 番目の引数の ID をどこで取得しましたか?