Не устанавливается кука user_key

Добрый день. Столкнулся с проблемой при реализации плагина входа на сайт через OpenId-провайдера.

Написал экшен и модули авторизации и аутентификации, и заметил, что после входа через 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, но разницы вроде бы нет, да и в моем случае он не применим.

В чем может быть проблема с установкой этой куки? С другими печеньками подобных проблем нет...

Похожие статьи

  • Ошибка авторизации через twitter
    Установил плагин «Плагин интеграции с соцсетями». Добавил ключи твитера: Consumer Key (API Key) и Consumer Secret (API Secret) и при авторизации ошибка Стойте! Маркёр запроса для этой страницы не действителен....
  • Автокат
    А существует ли автокат? Чтобы после х количества знаков текст уходил под кат, а в превью помимо текста была одна картинка, скажем первая по очереди в статье. Если нет — может кто из программистов сделает плагин? Мне ...
  • Проблема с авторизацией на локальном компьютере (AltoCMS 1.1.19.4)
    Установил на локальный компьютер AltoCMS 1.1.19.4. Установка прошла успешно, в конце установки создал учетную запись администратора. По требованию установщика удалил папку install. Зашел на главную страницу, пытаюсь...
  • Как вывести окно авторизации, при попытке голосовать неавторизированным пользователем
    Друзья, привет! Для удобства пользователей, хочу сделать такую фишку, если пользователь неаторизирован, но нажимает кнопку голосования, автоматом ему выводить окно авторизации, а не ошибку «Необходимо...

6 комментариев

0
Как-то не очень понятно: при авторизации кука проставляется, а после редиректа пропадает? И это все на одном домене, без переходов?
0
Нет. На сайте есть возможность авторизовываться через встроенные в движок учетки и через провайдера opened.

Если входить через встроенную учетку — все ОК, кука создается и человек остается залогиненным на долгое время.

Если входить через провайдера, то кука не создается. После перезапуска браузера приходится логиниться еще раз. Принцип работы модуля логина подобный плагину openId для лайвстрит:

1. Жмется кнопка, идет переход на сайт провайдера
2. Дается разрешение на авторизацию на моем сайте
3. Дальше идет переход на кэлбэк урл, где идет проверка регистрировался ли раньше пользователь через этого провайдера. Если да, то идет авторизация на сайте.

Вот в этот момент почему-то не прописывается кука user_key. Т.е. в этот момент все проверки и действия происходят у меня на сайте уже без переходов на другие домены.
0
На днях была похожая проблема — долго не могли понять, почему на одном сайте при подключении плагина не ставится кука. Долго ковырялись, не могли понять, и выяснилось, что один из подгружаемых файлов в кодировке UTF-8 BOM, и из-за этого идет вывод. А при любом выводе куки не устанавливаются.

Могу посоветовать следующее:
1) Обновиться до 1.1.3
2) В начале файла /index.php добавить:
define('DEBUG', 1);
3) А в /app/config.local.php добавить:
$config['sys']['include']['check_file'] = false;

Если какие-то файлы имеют подключаемую кодировку UTF-8 BOM, то увидите сообщения в логе error.log
0
Да, про то, что если перед установкой кук идет какой-то вывод, то она не будет работать, я читал.

Обновиться до 1.1.3 сейчас будет сложно, — с версии 1.0.8 были произведены кардинальные изменения в некоторых частях движка, из-за чего после обновления сайт валится. Надо ковырять, исправлять… Надо как-нибудь все-таки добраться и разобраться, посмотреть в этом ли дело.
0
Тогда попробуйте так: обновите у себя в модуле ModuleSession только метод SetCookie(), взяв его из последней версии движка 1.1.13, и включите константу DEBUG, как сказано выше в п.2

И смотрите логи. Если кука не ставится из-за того, что до этого момента был какой-то вывод, то в логах будет указано, в каком файле и в какой его строке был этот вывод.
0
Похоже, что у вас раньше файл /common/templates/language/actions/admin/en.php был с BOM. Я его не правил, дата стоит оригинальная, а в новой версии этот файл уже без BOM.

Пересохранил файл, кука встала. Спасибо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.