Такая проблема. После авторизации на внешнем auth-сервере редиректом перехожу на сайт с yii2-приложением с ключом доступа.
Проверяю ключ. Ключ валидный. выполняю:
Код: Выделить всё
Yii::$app->session->open();
if(Yii::@app->user->login($identity))
{
$_SESSION['my_key'] = "my_data";
}
Сервер имеет стандартные настройки.
Сессии хранятся в файлах на сервере.
В приложении стоит Yii2.0.40.
PHP 5.5.9
Авторизация через куки на сервере приложения отключена! Смысл в том, что если нет рабочей сессии, то пользователь редиректом должен перейти на auth-сервер, где уже либо есть кука, либо пользователь должен ввести пароль в форме.
В результате не рабочей сессии на сервере приложения, браузер циклически гоняется редиректами туда-сюда, пока не отвалится с ошибкой "Циклическое перенаправление на странице".
Опытным путем нашел проблему в том, что в методе User::switchIdentity() запускается регенерация сессии. Если закомментировать метод регенерации, то сессии волшебным образом начинают работать.
Я не нашел возможность отключить регенерацию сессии через конфиг приложения. Как предложение - добавить соответствующий ключ для этого.
Если не комментировать, то для решения проблемы помогает вставка функции session_write_close() перед методом регенерации.
Код: Выделить всё
session_write_close();
$session->regenerateID(true);
Что это, баг в фреймоврке или на сервере не хватает какой-то настройки?