.net для проверки подлинности файлов cookie в браузере.

Я использую проверку подлинности cookie в моем приложении .net core mvc. Одним из требований, которые я требую, является выход из системы при закрытии браузера. Я установил ускорение до 5 минут в приложении. Как и ожидалось, если пользователь вернется на сайт через 5 минут, пользователь будет перенаправлен на страницу входа в систему, но если пользователь вернется через 5 минут, пользователь автоматически войдет в систему. Есть ли способ выйти из системы, если браузер закрыт?

Ответ 1

Нет прямого способа определить, закрыт ли браузер, однако вы можете проверить, закрыта ли вкладка. Вы можете использовать следующие способы, в порядке усложнения:


Выгрузить событие

Слушайте событие unload в тэге <body>:

<html>
  <body onunload="tellServerBrowserClosed()">
  <!--...-->

Предостережение: Будет срабатывать, даже если вы покинете сайт по ссылке (на том же сайте) или кнопке возврата браузера. (not a good solution)


Ajax Beacon

Просто отправьте Ajax GET запросы против API из браузера (который должен иметь файлы cookie пользователя) на обычном (20-60 секундный интервал). Когда пропущено 2-3 маяка (вызовы API), очистите данные пользователя.

Предостережение: Вам нужно реализовать cronjob на стороне сервера для работы с истекшими маяками


WebSockets

Используйте соединение WebSocket (возможно Socket.io). Таким образом, как только пользователь закрывает вкладку, соединение закрывается, и вы можете использовать это событие для очистки своего сеанса. (Для дополнительной точности вы можете отслеживать несколько соединений сокетов от одного и того же пользователя, если они используют более 1 вкладку)