Я пытаюсь осуществить свою первую систему RBAC:Yii Authorization Assignment - Где Yii получает идентификатор?
Я получаю эту часть:
В Официальной документации, они есть пример с именем:
$auth->assign('adminRole', 'userA');
$auth->assign('adminRole', 'userB');
Однако, Я обнаружил, что в моем случае вместо этого ID будет работать.
$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
второй аргумент?
Я ищу установку по умолчанию Yii. Нет модулей, ничего. У меня есть логин действия на моем контроллере сайта. Единственный логин, который у меня есть. Он не принимает никакой CUserIdentity. Тем не менее, у меня есть метод аутентификации под моделью «LoginForm». Но призыв к changeIdentity не требуется. Поэтому, к сожалению, я не могу следовать вашим шагам. :( – MEM
Вам просто нужно найти 'CWebUser :: login()', поскольку это вызывает 'CWebUser :: changeIdentity' и все последующие шаги.' Yii :: app-> user' является объектом 'CWebUser' (по умолчанию) ,Если вы не внесли существенные изменения в код по умолчанию, 'Yii :: app() -> user-> login()' должен появиться где-то в классе LoginForm. –
Найдите его. ;) Все чисто. Большое спасибо за то, что нашли время, чтобы углубиться в него. – MEM