Я пытаюсь реализовать свою первую систему RBAC:
Я добираюсь до этой части:
В официальной документации у них есть пример с именем пользователя:
$auth->assign('adminRole', 'userA');
$auth->assign('adminRole', 'userB');
Однако я обнаружил, что в моем случае вместо этого будет работать идентификатор.
$auth->assign('adminRole', '8');
$auth->assign('adminRole', '9');
Почему сработал идентификатор, а не имя пользователя? Я предположил, что это произошло из-за того, что где-то мы перезаписали метод 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
второго аргумента?