Yii::app()->user->name и Yii::createComponent()

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Аватара пользователя
Begemot
Сообщения: 34
Зарегистрирован: 2013.10.30, 16:14

Yii::app()->user->name и Yii::createComponent()

Сообщение Begemot »

После вызова $component=Yii::createComponent($config);
В частности он вызывается в SRBAC при построении списка контролеров, в Yii::app()->user пропадают данные о пользователи, он становится guest.

То есть печатаю данные о пользователе до вызова этого метода все хорошо имя пользователя id и т.п. есть сразу после вывода ничего нет. Соответственно после вызова getModlule() тоже ничего нет и т.д.
Как с этим быть, yii-1.1.14, до этого был 1.1.13 но разницы ни какой.

Как с этим быть?
Аватара пользователя
Begemot
Сообщения: 34
Зарегистрирован: 2013.10.30, 16:14

Re: Yii::app()->user->name и Yii::createComponent()

Сообщение Begemot »

Углубился в изучение этой проблемы оказалось дело в данном случае было в строке
$object=new $type($args[1],$args[2],$args[3]);

метода createComponent($config) в YiiBase.php

В случае SRBAC в качестве $type поступало GiiModule и данные о пользователе пропадали, другие типы проходили хорошо, закомментировал подключение gii в настройках и проблема пропала.

Но как SRBAC использовал gii и почему его отключение ни как не повлияло на работу, пока не ясно.

Все оказалось просто. SRBAC для получения информации о контролерах, читает секцию modules из конфиг файла а там как раз gii и был
В ходе работы SRBAC создает объект GiiModule который при инициализации заново инициализирует под себя Yii::app()->user в частности.
Ответить