Как разлогинить админа при закрытии браузера?

  • 9 Ответов
  • 349 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

dmitry_stas

  • ********
  • 9615
  • 929
Доброго всем.

Собственно, сабж. Нужно чтобы админы никогда не входили автоматически в админку после повторного открытия браузера. Все было просто до того момента, пока некоторые (иначе не назовешь) сволочи не забили на удаление сессионных кук...

Есть у кого идеи?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Victor333

  • ****
  • 341
  • 1
Может жизнь сессии сделать минимальной?

*

AlekVolsk

  • ********
  • 6301
  • 336
а есть какое-либо событие js, отлавливающие закрытие окна браузера? по событию аяксом отправлять токен сессии куда следует, а там по полученному токену сессию закрывать, не?
« Последнее редактирование: 01.05.2016, 23:07:13 от AlekVolsk »

*

robert

  • ********
  • 4002
  • 371
а есть какое-либо событие js, отлавливающие закрытие окна браузера? по событию аяксом отправлять токен сессии куда следует, а там по полученному токену сессию закрывать, не?
Да, тоже посетила такая мысль, только на серверной стороне не закрывать сессию сразу, а сначала проверять, живо ли соединение.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

dmitry_stas

  • ********
  • 9615
  • 929
Цитировать
Может жизнь сессии сделать минимальной?
Ну вот видимо да, придется делать что-то в этом направлении, иных решений не вижу. Время сессии делать минимальной не очень хочется, поскольку на сайте крутится и-магазин, и уменьшение времени сессии повлечет за собой проблемы для фронта (обнуление корзины в самый неподходящий момент, и т.п.), а туда лезть переделывать не охота. Придется видимо в админке логику менять, отслеживать время последнего обращения, и принудительно рубить сессию если больше например 70 секунд, и при этом пинговать каждые 60 секунд... Нагрузки конечно добавится, но фиг с ним для админки, придется пожертвовать...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

dmitry_stas

  • ********
  • 9615
  • 929
Цитировать
какое-либо событие js, отлавливающие закрытие окна браузера
а как однозначно разделить закрытие и например обычный переход по внутренней ссылке, или даже просто f5 ? если есть этому решение, то даже не нужен доп.запрос, можно просто удалять сессионную куку. но я такого решения не знаю...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

AlekVolsk

  • ********
  • 6301
  • 336
имхо, поставить эксперимент: в шаблоне, в index.php добавить скрипт с вылетом алерта по событию onbeforeunload и посмотреть, в какие моменты оно срабатывает, это ж просто вроде как

а вот если это решение не подойдет, то тогда нужно будет думать дальше

если эксперимент состоится, то просьба отписаться о его результатах здесь, мож пригодится кому
« Последнее редактирование: 01.05.2016, 23:22:47 от AlekVolsk »

*

dmitry_stas

  • ********
  • 9615
  • 929
дык зачем эксперимент ставить? я и так скажу :) всегда срабатывает, когда страница собирается выгрузится. а выгрузится она может по самым разным причинам... закрытие вкладки, закрытие браузера, перезагрузка страницы, отправка формы, переход на новый адрес в строке url, переход по закладке, и т. д.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

AlekVolsk

  • ********
  • 6301
  • 336
есть событие onbeforeunload и onunload, у них разное поведение, последнее срабатывает даже при переходе по ссылке с таргет=бланк, тут действительно лучше проверить

*

dmitry_stas

  • ********
  • 9615
  • 929
Ну они разные, да, но основное отличие в том, что в момент onbeforeunload выгрузку страницы еще можно отменить, а в момент onunload уже нельзя. И еще плюс пару отличий, типа вызова в момент AJAX-запроса, и т.п. Но принципиальной разницы для нас нет, именно закрытие они не покажут, это будет любая выгрузка страницы.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций