Отвязать сессию от IP

Версия InstantCMS - 2.5.1

#1 22 августа 2016 в 20:01
Друзья, прошу подсказок.
Суть проблемы: пользователи заходят на сайт с разных браузеров и с разных устройств. И вот пользователь, например, открывает где-то в дороге с мобильного свою почту и видит уведомление о новом комментарии. Кликает по ссылке — и не может сразу ответить (а то и войти в раздел, если он не публичный), потому что он не в своей учетной записи. И ему приходится в очередной раз входить. Некоторых это откровенно задалбывает.
Я сначала не понимал, почему так происходит, а потом дошло: видимо, все дело в привязке сессии к ip-адресу? А если так, то как эту связку отключить? И чем это чревато?
Я видел сообщение об отключении привязки сессии к ip, но предложенное там было, как я понял, для версии 1.х. А как отключить привязку сессии к ip в 2.5.1?

Буду благодарен за информацию.
#2 22 августа 2016 в 20:20

А как отключить привязку сессии к ip в 2.5.1?

Денис Швецов
В InstantCMS2 не никаких привязок ip к сессиям.
А чтобы не вводить много раз пароль можно при авторизации ставить чекбокс "запомнить меня", странно, что это не первое, что пришло вам на ум.
#3 22 августа 2016 в 22:04
Fuze, спасибо за ответ!
Да, "запомнить меня" — это не только первое, что пришло мне на ум, но и первое, что было сделано мною и проверено многократно. Не работает.
Почему же тогда происходят вылеты? И у меня самого, и у пользователей?
Пример ситуации: работаю дома на компьютере — все в порядке, без вылетов. Выхожу из дома, включаю на смартфоне мобильный интернет — нужно войти под своей учетной записью. Вошел, отправил комментарий. Прихожу домой, открываю браузер, захожу на сайт — сессия прервана, нужно входить заново. Причем, если я не открываю сайт, используя другую сеть (видимо, с другим ip), то никаких вылетов не происходит.
У других людей, у пользователей моего сайта, похожие ситуации.
Если нет привязки к ip, то тогда что это?
#4 22 августа 2016 в 22:28

Прихожу домой, открываю браузер, захожу на сайт — сессия прервана, нужно входить заново.

Денис Швецов
Потому, что чекбокс "запомнить меня", поставленный в форме, формирует токен "запомнить меня", привязанный к браузеру. В другом браузере, если вы поставите этот чекбокс, то сайт запомнит его, в предыдущем же браузере сайт "забудет". Иными словами, функционал "запомнить меня" работает только в последнем браузере, где вы авторизовались с запоминанием. Механизма множественного "запоминания" нет в движке на текущий момент.

Выход: доработайте систему автологина, чтобы запоминались все токены авторизации.

p.s. лучше описывать не свои умозаключения, а проблему, как вы сделали во втором сообщении и сразу стало всё понятно.
#5 22 августа 2016 в 23:24
Fuze, спасибо за пояснение. Да, теперь ситуация прояснилась.

p.s. лучше описывать не свои умозаключения, а проблему, как вы сделали во втором сообщении и сразу стало всё понятно.

Да, вы правы.

Выход: доработайте систему автологина, чтобы запоминались все токены авторизации.

Подскажите, пожалуйста, а что значит — "доработать систему автологина"? Это значит переписать пару строчек кода в каком-то файле сайта (в каком?), или речь идет о разработке чего-то посерьезнее?
Подсказка мне будет очень полезна.
#6 23 августа 2016 в 07:38
Используйте автозаполнение полей формы.
Данные для автозаполнения, любой браузер запоминает самостоятельно,
если не забыли после нажатия кнопки "Войти" :
во всплывающем окне браузера нажать ЗАПОМНИТЬ ПАРОЛЬ.
Только в этом случае, этот браузер с которого ВЫ производите первую авторизацию,
запомнит входные данные, и будет использовать их для автозаполнения полей формы авторизации полей email и password.
И ВЫ сможете использовать форму с автозаполнением, то есть достаточно нажать кнопку Вход.
Вот три основных браузера использовали "Запомнить пароль" на одном устройстве
Автозаполнение Chrome:

Автозаполнение Firefox:

Автозаполнение Opera:

Теперь можно осуществлять вход в любой или во все сразу браузеры без разницы, только нажав кнопку Войти.
Неужели пользователи не знают как пользоваться функциями браузера?
#7 23 августа 2016 в 08:44


Теперь можно осуществлять вход в любой или во все сразу браузеры без разницы, только нажав кнопку Войти.

Геннадий Иванович
Вот именно!
ТС ищет способ, чтобы не нажимать в каждом браузере никаких кнопок, а пользователь автоматически авторизовывался.
#8 23 августа 2016 в 10:04

ТС ищет способ, чтобы не нажимать в каждом браузере никаких кнопок, а пользователь автоматически авторизовывался.

solntsev
к тому же это не решит проблему закрытых разделов, или страниц, где нужна авторизация, например при переходе по ссылке "добавить новость" из письма пользователь увидит 404…
#9 23 августа 2016 в 10:51
Про автозаполнение и запоминание полей логин/пароль и я, и мои пользователи знаем. Только это не облегчает жизнь пользователям. И они удивляются, почему им каждый раз в фейсбуке не нужно заново входить, а на моем сайте нужно.

ТС ищет способ, чтобы не нажимать в каждом браузере никаких кнопок, а пользователь автоматически авторизовывался.

Да. Спасибо.

к тому же это не решит проблему закрытых разделов, или страниц, где нужна авторизация, например при переходе по ссылке "добавить новость" из письма пользователь увидит 404...

Совершенно верно. Спасибо.

А только у меня пользователи жалуются на такую авторизацию?
#10 23 августа 2016 в 11:01
А каково время жизни сессии???????
Никто не думал?
#11 23 августа 2016 в 11:02

А каково время жизни сессии???????

А где это можно посмотреть и изменить?
#12 23 августа 2016 в 11:35


А каково время жизни сессии???????
Никто не думал?

Hmelex
Вы считаете, что это поможет?
Здесь привязка к браузеру (читайте — cookie).
Автологин происходит, если движок находит в куках токен, если не находит, просит пройти авторизацию.
#13 23 августа 2016 в 11:40

А каково время жизни сессии

Hmelex
Это не при чем, я объяснил выше.

Здесь привязка к браузеру (читайте — cookie)

solntsev
Совершенно верно.

Выход — сделать таблицу токенов и хранить для каждого пользователя все токены "запомнить меня", вот и всё.
#14 23 августа 2016 в 11:46

Выход — сделать таблицу токенов и хранить для каждого пользователя все токены "запомнить меня", вот и всё.

Друзья, кто-нибудь уже такое делал? Как это вообще делается?
#15 23 августа 2016 в 11:51
Еще изменить данную строку.
До вызова функции найти токен в созданной на предыдущем шаге таблице с токенами, а в эту функцию уже передать ID найденного пользователя.
Не забыть еще про добавление токена.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.