[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
363
+12
Поблагодарить автора Отправить деньги

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

Илья Уткин
23 января 2021, 18:47
+1
Пришла идея криптовать их каким-нибудь openssl_encrypt, а через фронт передавать только закодированную строку, раскодируя её в нужный момент при установке голоса.
Интересный выход из ситуации. Надо будет запомнить, может где-то пригодится.

Я бы, наверное, записывал массив, например, в кеш, а с фронтенда передавал ключ кеша. Но было бы большое количество файлов, вместо кучи записей в таблице сессий)
    Павел Гвоздь
    24 января 2021, 07:46
    0
    Решил обойтись без кучи файлов, там итак кеш-файлов хватает)
    Алексей
    17 февраля 2021, 09:40
    0
    странно, как можно установить anonymous_sessions = 0, ведь при этом пропадает возможность залогиниться в систему? ещё с 2016 года)
    github.com/modxcms/revolution/issues/12983
      Павел Гвоздь
      18 февраля 2021, 06:51
      0
      Для контекста web добавив эту настройку, например.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4