Написал экшен и модули авторизации и аутентификации, и заметил, что после входа через opened-учетку не устанавливается кука user_key. Без этого после перезапуска браузера приходится авторизовываться заново.
Начал копать.
В экшене авторизации через openId, когда идентификатор пользователя был уже получен, идет следующий код:
if ($oUser = $this->PluginXXX_Openid_GetUserByOpenId($sOpenId)) {
$this->User_Authorization($oUser);
R::Location(Config::Get('path.root.web').'/');
} else {
...
}
В системной функции Authorization идет установка нужной куки, т.е. вызывается нужная setcookie(...), но сама кука в браузере не прописывается. При проверке значения устанавливаемой куки не нашел ничего подозрительного — она аналогична той, что устанавливается при входе через учетную запись обычного пользователя.
После авторизации идет редирект на главную страницу, как и в модуле openId для livestreet. В ActionLogin у AltoCMS редирект идет через ajax, но разницы вроде бы нет, да и в моем случае он не применим.
В чем может быть проблема с установкой этой куки? С другими печеньками подобных проблем нет...
Если входить через встроенную учетку — все ОК, кука создается и человек остается залогиненным на долгое время.
Если входить через провайдера, то кука не создается. После перезапуска браузера приходится логиниться еще раз. Принцип работы модуля логина подобный плагину openId для лайвстрит:
1. Жмется кнопка, идет переход на сайт провайдера
2. Дается разрешение на авторизацию на моем сайте
3. Дальше идет переход на кэлбэк урл, где идет проверка регистрировался ли раньше пользователь через этого провайдера. Если да, то идет авторизация на сайте.
Вот в этот момент почему-то не прописывается кука user_key. Т.е. в этот момент все проверки и действия происходят у меня на сайте уже без переходов на другие домены.
Могу посоветовать следующее:
1) Обновиться до 1.1.3
2) В начале файла /index.php добавить:
3) А в /app/config.local.php добавить:
Если какие-то файлы имеют подключаемую кодировку UTF-8 BOM, то увидите сообщения в логе error.log
Обновиться до 1.1.3 сейчас будет сложно, — с версии 1.0.8 были произведены кардинальные изменения в некоторых частях движка, из-за чего после обновления сайт валится. Надо ковырять, исправлять… Надо как-нибудь все-таки добраться и разобраться, посмотреть в этом ли дело.
И смотрите логи. Если кука не ставится из-за того, что до этого момента был какой-то вывод, то в логах будет указано, в каком файле и в какой его строке был этот вывод.
Пересохранил файл, кука встала. Спасибо.