Авторизация и механика чекбокса "запомнить меня" Есть решение
Тех. поддержка отфутболила сюда, вразумительного ответа от них добиться не смог.
Вопрос по механике работы чекбокса "запомнить меня". Мои ожидания по его работе следующие: если checked, то сессия авторизации хранится сколько угодно долго не зависимо от настройки php session.gc_maxlifetime сервера? Или у меня завышенные ожидания?
В чем разница состояний этого чекбокса?
Проблема описана была уже многими в разделе помощь, например в этой теме: https://support.webasyst.ru/fo...
3 ответа
Такой ответ получил от тех поддержки:
"Если эта галочка есть, то в браузер устанавливается cookie с токеном авторизации на месяц, иначе - только на текущую сессию.
Работа механизма связанна с сессиями php, но прежде всего для неавторизованных пользователей, в этом случае работает session.gc_maxlifetime"
Я это понимаю так, что для авторизованного пользователя с отмеченной галочкой "запомнить меня" session.gc_maxlifetime ни на что не влияет. Поправьте если я ошибаюсь.
Стал ковырять и нашел баг на стороне авторизации вебасиста.
1) Форма авторизации на витрине /login/
При отправке формы с галочкой "запомнить меня" видим что отправляет два значения remember 1 и 0
Стали искать откуда - выяснилось что в форме авторизации вебасиста два инпута с одинаковым атрибутом name="remember", один из них hidden
Он и перезатирает то что выбирает пользователь.
2) Форма авторизации в бекенде /webasyst/
Там тоже самое только порядок инпутов обратный
<input type="hidden" name="remember" value="0">
<input type="checkbox" name="remember" value="1">
Remember me
Поэтому input hidden не перезатирает значение пользовательского
Вот такие дела, зато на 200млн плагинов напродавали))))) Кайф.
С формой на витрине(/login/) - разобрался, там порядок меняла кастомная тема. В обычной теме порядок этих инпутов как и в бэкенде.
Странное конечно решение с двумя инпута с идентичными аттрибутами - выглядит как костыль, но вроде работает. Претензии снимаются.