Я использую проверку подлинности cookie в моем приложении .net core mvc. Одним из требований, которые я требую, является выход из системы при закрытии браузера. Я установил ускорение до 5 минут в приложении. Как и ожидалось, если пользователь вернется на сайт через 5 минут, пользователь будет перенаправлен на страницу входа в систему, но если пользователь вернется через 5 минут, пользователь автоматически войдет в систему. Есть ли способ выйти из системы, если браузер закрыт?
.net для проверки подлинности файлов cookie в браузере.
Ответ 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 вкладку)