Задать вопрос
AlexanderTsymbal
@AlexanderTsymbal
tsymbal.su

Почему не устанавливаются куки BITRIX_SM_... при авторизации?

Добрый день.
Делаю авторизацию на сайте BITRIX. Точнее, копирую готовый функционал с другого сайта (на другом хостинге), правда, там старая версия BITRIX и php 5.6, а тут последняя (пока без лицензии) и php 7.4.
В общем, авторизация работает, но не продлевается, даже при включённых настройках "Разрешить запоминание авторизации", "Использовать защищенное хранение авторизации в cookies", "Распространять авторизацию на все домены".
Для авторизации используется кастомный функционал, который авторизует по проверочному коду, высылаемому в SMS. Т.е. человек указал свой номер телефона, битрикс проверяет наличие пользователя с этим номером и высылает смс с кодом для подтверждения. После ввода корректного кода срабатывает функция: CUser::Authorize($ID,true)
Обращаю внимание, что второй параметр установлен на true и по идее он отвечает за включение сохранения авторизации. Но этого не происходит.
Пробовал заменить эту функцию и вручную авторизовать пользователя по CUSER::Login($LOGIN,$PASSWORD,"Y") - третий параметр которой так же отвечает за сохранение авторизации, но эффекта тоже нуль.
Обратил внимание, что при авторизации не устанавливаются cookie из серии BITRIX_SM_........., в частности, BITRIX_SM_LOGIN, BITRIX_SM_UIDH - которые, как раз за это и отвечают. Однако, бесполезная BITRIX_SM_SOUND_LOGIN_PLAYED устанавливается. Что очень странно.
Возможно, кто-нибудь сталкивался с этой ситуацией? Подскажите, куда копать? Я склоняюсь к мысли, что, вероятно, настройки php/сервера мешают сохранять нужные cookies.
  • Вопрос задан
  • 2851 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
smilingcheater
@smilingcheater
Какая именно версия битрикса?
Авторизация происходит аякс-запросом? Если да - то как возвращаете ответ от сервера?

В последних версиях (19.0-20.5) поменяли работу с куками, и в принципе сильно поменяли процесс обработки запроса.
Чтобы выставленные через битрикс куки отправились, попробуйте после вашего header перед умиранием добавить код:
\Bitrix\Main\Context::getCurrent()->getResponse()->writeHeaders();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы