Как обновить вкладки браузера, когда пользователь вышел из системы
Как я могу справиться с ситуацией, когда вошедший в систему пользователь открывает две вкладки и выходит из любой из этих открытых вкладок. Мне нужно, чтобы другая вкладка браузера знала, что пользователь вышел из системы. и отклоняет любые другие запросы от пользователя со стороны самого клиента.
Я использую PHP/Kohana
3 ответа
Хотя я в основном согласен с NB ("вам, вероятно, ничего не нужно делать"), я могу придумать пару вариантов:
- Ваши страницы могут опрашивать ваш сервер и проверять статус сеанса.
- Ваша страница выхода может обновить cookie или локальное хранилище. Другие страницы будут опрашивать это местоположение вместо вашего сервера.
Есть несколько способов сделать это. Один, если перенаправить маршрут, используя запрос Kohana. Два, используя javascript для проверки и перезагрузки.
Используя Kohana, это может быть просто. В вашем основном контроллере, который вы расширяете или используете, используйте функцию before, где вы будете определять, вошел ли пользователь в систему, и предпринимать какие-либо действия, если да или нет. Просто используйте модуль авторизации kohana для входа в систему, например:
Auth::instance()->login($username, $password);
Тогда kohana автоматически сохранит этого пользователя как вошедшего в систему. Вы перед функцией должны содержать что-то вроде:
if (!Auth::instance()->logged_in())
{
//redirect to login page
}
Таким образом, вы будете проверять, вошел ли пользователь в систему, когда он попытается открыть другую страницу. Если вы также используете AJAX, это также должно быть применено к главному контроллеру AJAX.
Затем, чтобы выйти из системы, используйте:
Auth::instance()->logout();