[xLike] 1.1.2 Работа с отключенными сессиями для анонимов и поддержка IPv6

Если вам, как и мне, нужно ограничивать анонимов в сессиях, чтобы таблица с сессиями не заполнялась на несколько тысяч записей за 10 минут, то вместе с этим вам придётся столкнуться с некоторыми трудностями. Например, когда в сессию пишутся параметры сниппета для проброса их в какой-нибудь action.php, чтобы не делать этого прямиком через фронтенд.

Отключив сессии для анонимов на сайте, xLike перестал корректно работать, выдавая ошибку при попытке проголосовать. Происходит это, потому что session_id в нём играл основную роль для идентификации юзера, даже при включённой проверке по IP. А проблема заключалась как раз в том, что сниппет xLike пишет в сессию свои параметры, которые необходимы в момент установки голоса пользователем.

Встаёт вопрос, как передавать параметры сниппета в процессоры установки голоса, чтобы на фронте их нельзя было подменить (ну мало ли). Пришла идея криптовать их каким-нибудь openssl_encrypt, а через фронт передавать только закодированную строку, раскодируя её в нужный момент при установке голоса.

Сказано – сделано! Встречайте новую версию xLike, работающую на сайтах с отключёнными сессиями для гостей. Для настройки ничего делать не надо, работает из коробки. Кстати, вместе с этим был исправлен баг с проверкой IPv6 клиентов. Если у кого осталась проблема с поддержкой IPv6, надо переустановить компонент в менеджере пакетов, чтобы в таблице modx_xl_votes поле ip стало varchar(44).

P.S. Если возникнут какие-то проблемы после обновления – пишите об этом под данным топиком.
Павел Гвоздь
13 января 2021, 17:07
modx.pro
150
+12
Поблагодарить автора Отправить деньги

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0