1С-Битрикс. Выключение попытки авторизации на сайте по логину и паролю базовой http-авторизации
Когда на сайте используется базовая http-авторизация, то после ввода верных данных и успешной авторизации битрикс пытается по этим же данным авторизовать вас и на самом сайте. И если учётки в битриксе с такими параметрами нет, то на страницах, где есть вызов компонента формы авторизации будет всегда красоваться сообщение об ошибке «Неверный логин или пароль».
Попытка авторизации вызывается в файле /bitrix/modules/main/include.php:
//http basic and digest authorization if(($httpAuth = $GLOBALS["USER"]->LoginByHttpAuth()) !== null) { $arAuthResult = $httpAuth; $GLOBALS["APPLICATION"]->SetAuthResult($arAuthResult); }
В самой функции CUser::LoginByHttpAuth() есть вызов обработчика onBeforeUserLoginByHttpAuth. И если в обработчике вернуть не null, то попытка авторизации на сайте по параметрам http-авторизации будет прервана.
Код обработчика
Bitrix\Main\EventManager::getInstance()->addEventHandler('main', 'onBeforeUserLoginByHttpAuth', function (&$arAuth) { return false; });
Документации по событию onBeforeUserLoginByHttpAuth нигде в интернетах нет. Решение практически всегда есть в исходниках. Читайте их и решение на любую проблему всегда найдётся ;-)
На этом всё.
2 комментария
Потратил 3 часа на поиски проблемы и ее решения. Зачем в Битрикс сделали это поведение по умолчанию я вообще недоумеваю.
Следует учитывать тот факт, что именно этим способом авторизуется 1С на сайт. И этот обработчик сломает ему авторизацию.
Для 1С нужно добавить небольшую проверку в этот обработчик.