tigroid3
@tigroid3
PHP, YII2, SQL, Postgres, Docker, SPHINX, GIT

Как разлогинить всех пользователей?

Появилась необходимость разлогинить всех пользователей.
Пока мысли, только чтобы добавить всем пользователям флаг, а при входе пользователя смотреть, стоит ли этот флаг и если да, то logout юзера, может есть какие нибудь более изящные способы?
  • Вопрос задан
  • 1606 просмотров
Пригласить эксперта
Ответы на вопрос 4
Каждая сессия - это файл на сервере, удаляем файлы все и юзеров заставят авторизоваться при следующем запросе страницы.
есть встроенные методы для удаления сессии всех пользователей.

Сессии хранятся в недоступном для Yii месте выше по директориям сервера
Ответ написан
@SharuPoNemnogu
не язык плохой, программисты такие...
есть метод getSavePath(), можно попробовать очистить папку через exec, либо unlik в цикле, это конечно если доступ будет.
еще есть gcSession, че то такое, сборщик мусора, можно погуглить про него.
а еще можно время жизни сессии поставить в 1 секунду и все попадают)
Ответ написан
@theg4sh
Можно организовать флаги на базе MemCached:
Cоздав, например, флаг 'action_logout:15' со значением например '{"ip":"10.0.0.1","ts":1234567890}' в момент запроса от клиента c id=15 пробовать получить по ключу значение из MemCached,
Если найдено, то проверить все необходимые условия и разлогинить только его, в примере, что "ip" клиента соответствует 10.0.0.1.
Как вариант, дополнительно можно проверять 'action_logout:*' для всех попадающих под условие.
Да массу чего можно придумать, на базе этого. Так же можно добавить текст причины окончания сессии, чтобы полностью не травмировать психику людей :)

Средствами Yii опять же возможно разлогинить, если перевести данные сессий в MemCached, благо это делается парой строк в конфиге, и по необходимости чистить содержимое MemCache.
Ответ написан
Комментировать
romy4
@romy4
Exception handler
Удалить все их сессии, сделать их невалидными удалив какой-то токен авторизации?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы