Ситуации, когда CRM-система теряет сессию и выкидывает пользователя из портала, возникают редко. С данной проблемой мы столкнулись при работе с одним из наших новых клиентов. Он пользуется коробочной версией системы, а значит решение за собственником портала. Если подобная ошибка возникла у вас на облачной версии – обратитесь в техническую поддержку разработчика Битрикс24.
В статье расскажем о решении проблемы с разлогиниванием пользователей коробочного Битрикс24.
Разберем проблему в 3 этапа:
Симптомы проблемы разлогинивания Битрикс24
Нашим специалистам отдела инфраструктуры поступила задача: на портале клиента наблюдается плавающее время разлогинивания. Иногда 5-10 минут, иногда 20-30 секунд. Фактически после любого действия и перехода на портале пользователя выкидывало на страницу авторизации.
Проблема наблюдалась на стороне всех пользователей, вне зависимости от того, являются они администраторами или нет, и выглядела следующим образом:
- Пользователь проходит авторизацию на портале.
- Совершает какое-либо действие – переходит в другой раздел сайта, создает сделку, просматривает уведомления.
- После нескольких операций пользователя на портале происходит разлогинивание – возврат на стартовую страницу Битрикс24.
Быстрое тестирование показало, что проблема наблюдается в разных браузерах и не зависит от них. Мы проверили три самых популярных браузера:
Определившись с симптомами проблемы, мы начали выяснять ее причины.
Причины разлогинивания
Причин для разлогинивания может быть несколько, расскажем о 5 часто встречающихся.
Первая причина, которую можно сразу предположить – минимальное время действия сессии.
Простыми словами, сессия – это время, в течение которого авторизованный на портале пользователь может бездействовать без необходимости повторного ввода логина и пароля. Однако сомнения вызывало чересчур короткое время разрешенных действий на портале – от 20 секунд до 15 минут. В среднем, время сессии по умолчанию равняется 24 минутам.
Вторая причина, не самая очевидная, – использование услуг хостинг-провайдера с определенными ограничениями.
Например, CloudFlare. Если вы пользуетесь данным сервисом для защиты от DDOS-атак, то с большой долей вероятности причина кроется именно в этом.
На просторах интернета это довольно распространенная ошибка, вызывающая неудобства для пользователей. Постоянно слетающая авторизация не позволяет править элементы и совершать банальные действия на портале.
С технической точки зрения провайдер CloudFlare подменяет IP пользователя на свой IP, и, как следствие, текущая сессия прерывается.
Третья причина может быть скрыта в смене провайдера.
При переносе коробочной версии портала на другой хостинг могут возникнуть проблемы с правами доступа к файлам и каталогам.
Четвертая причина – проблема с обновлениями или конфигурационными файлами системы.
«Сломать» Битрикс24 через административную панель пользователю, не обладающему достаточными компетенциями, очень просто. Достаточно лишнего пробела или одной удаленной строчки из конфигурационного или любого другого системного файла для того, чтобы нарушить работу портала.
Пятая причина – права доступа.
Файлы dbconn.php, init.php и after_connect.php с сессиями продукта создаются, но PHP не хватает прав доступа, чтобы к ним обратиться.
Для решения проблемы разлогинивания пользователя нужно проверить все участки, где мог возникнуть сбой или требуется корректировка настроек. Иногда работы нужно провести не по одному пункту.
Для решения проблемы требуются соответствующие компетенции!
Если вы не уверены в своих навыках, обратитесь в компанию ПУСК
Решение проблемы
После того, как определили, где может быть причина возникающей проблемы, движемся к ее решению поэтапно.
Первый шаг – настраиваем время сессии. Существуют разные способы определения и установки времени жизни сессии. Рассмотрим три из них:
1. Настройка сессии на веб-сервере:
Выполняется путем редактирования файла php.ini. Данный способ подходит для администратора веб-сервера.
В файле php.ini нужно исправить следующие строки:
session.gc_maxlifetime = 172800
session.cookie_lifetime = 0
Параметр gc_maxlifetime — время в секундах, по истечению которого данные могут быть удалены. 86400 — 48 часов (2 суток) в секундах. Если установить значение 0, то время действия сессии будет бесконечным. Однако это может привести к падению производительности и безопасности сервера.
Параметр cookie_lifetime — время жизни файлов cookies.
2. Настройка сессии в файле .htaccess
Файл .htaccess позволяет системному администратору управлять настройками веб-сервера. Для редактирования .htaccess требуется доступ к файлам сайта, которые, как правило, хранятся на сервере. Данный способ не сработает, если в качестве обработчика PHP используется не Apache. В противном случае понадобятся более глубокие настройки веб-сервера.
В файл .htaccess следует вписать:
php_value session.gc_maxlifetime 172800
php_value session.cookie_lifetime 0
Данный способ практически аналогичен первому (настройке через php.ini.).
3. Настройка времени сессии в административной панели – самый простой способ для пользователя с административными правами на портале Битрикс24, не желающего напрямую работать с файлами сервера.
Для установки времени сессии нужно зайти в панель Администрирования и перейти в панель Настройки. Далее нужно зайти в Группы пользователей и для нужных групп в разделе Безопасность установить нужное время сессии. По умолчанию установлен параметр Не переопределять – это означает, что по умолчанию значение длительности сессии берется из настроек сервера.
Настроили время сессии, движемся дальше.
Второй шаг – определить хостинг-провайдера вашего портала и внести правки на стороне используемого ресурса. Если вы не знаете, какой провайдер предоставляет вам свои услуги, можно провести диагностику на сторонних сервисах:
Если ваш хостинг-провайдер CloudFlare, то внезапное разлогинивание объяснимо – сессия обрывается инструментами защиты Битрикс24.
Для исправления ошибки необходимо внести правки в файл dbconn.php вашего сайта. Данный файл находится в папке php_interface по следующему пути:
Административная панель → Контент → Структура сайта → Файлы и папки → Bitrix → php_interface
Нажимаем на Редактировать как PHP и добавляем следующую строчку:
$_SERVER["REMOTE_ADDR"] = $_SERVER['HTTP_CF_CONNECTING_IP'];
Вставлять ее нужно до знака ?>, иначе ничего не сработает.
P.S. в сеансах Bitrix CMS привязаны к одному IP-адресу, поэтому, если ваш IP-адрес меняется – автоматически вы больше не можете войти в систему.
Третий шаг – проверка прав доступа записи в папке хранения сессии пользователей. В случае чего, откорректировать их.
Четвертый шаг – проверить следующие системные файлы на наличие лишних пробелов или символов:
- dbconn.php
- after_connect.php
- after_connect_d7.php
- init.php
Данные файлы находятся в папке php_interface по аналогичному со вторым шагом пути:
Административная панель → Контент → Структура сайта → Файлы и папки → Bitrix → php_interface
Для диагностики подобных ошибок можно также запустить инструмент Проверка системы в административной панели.
Пятый шаг – предоставить права доступа PHP. Для этого нужно внести правки в файл dbconn.php, находящийся по адресу:
Административная панель → Контент → Структура сайта → Файлы и папки → Bitrix → php_interface
Выбираем Редактировать как PHP и закомментируем (ставим //) следующую строчку:
//@umask(~BX_DIR_PERMISSIONS);
В нашем случае решающим оказался второй шаг – клиент, у которого обнаружилась проблема, пользовался услугами CloudFlare. Стоит отметить, что команда Битрикс24 также не рекомендует использовать проксирование от CloudFlare:
Мы поправили настройки, не затрагивая системные файлы, хранящиеся на хостинге. Последующие проверки ошибок не выявили. Сотрудники компании продолжили работу на портале, не отвлекаясь на ежеминутный ввод логина и пароля.
Если вы столкнулись с подобной ошибкой и не знаете, как с ней справиться, свяжитесь с нами бесплатно по телефону +7 (495) 118-39-18 или через форму ниже. У нас есть опыт в решении частных и типовых проблем по Битрикс24.