Как организовать выход с личного кабинета на сайте на всех устройствах?
В последнее время на некоторых сайтах в личных кабинетах видим функцию "выйти со всех устройств", те. нажимаем на кнопку и происходит выход из личного кабинета на сайте на всех авторизованных устройствах. Подскажите как возможно реализовать такое(выход в реальном времени)?
P.S.: на первых взгляд можно сделать привязку к базе и делать бинд каждую минуту, но не хотелось бы перегружать сайт частыми запросами.
Обычно на сервере хранят токены авторизации для каждого пользователя. А при выходе со всех устройств удаляют эти ключи по маске.
Пример алгоритма с использованием Redis.
1) При авторизации создается ключ вида auth:[user_id]:[token] = true. Токен - штука уникальная. Например md5(строка + соль).
2) Этот самый token кладется в куку клиенту.
3) Если у клиента есть есть кука с токеном и соответствующий ключ зарегистрирован в Redis - значит на данном устройстве клиент авторизован.
4) При необходимости разлогинить человека на всех устройствах из Redis удаляются все ключи соответствующие маске auth:[user_id]:* и всё.
YourQuestion: Если человек нажимает кнопку выход, то удаляется только тот ключ, которому соответствует токен и куки. А если нажимает ралогиниться на всех устройства, то удаляются все ключи по маске. Это как пример