我在我的 .net 核心 mvc 应用程序中使用 cookie 身份验证。我的要求之一是在浏览器关闭时注销用户。我在应用程序中将滑动到期时间设置为 5 分钟。正如预期的那样,如果用户在 5 分钟后返回网站,用户将被重定向到登录页面,但如果用户在 5 分钟内返回,用户将自动登录。如果浏览器关闭,有没有办法注销用户?
最佳答案
没有直接的方法可以检测浏览器是否关闭,但是您当然可以检查选项卡是否已关闭。您可以按复杂程度使用以下方法:
卸载事件
监听 unload
您的 <body>
上的事件标签:
<html>
<body onunload="tellServerBrowserClosed()">
<!--...-->
警告: 即使您通过链接(在同一站点内)或浏览器后退按钮离开站点时也会触发。 ( not a good solution
)
Ajax 信标
只需发送 Ajax GET
定期(20-60 秒)从浏览器(应该有用户的 cookie)向 API 发出请求。当错过 2-3 个信标(API 调用)时,清除该用户的数据。
警告:您需要实现服务器端 cronjob 来处理过期的信标
WebSockets
使用 WebSocket 连接(可能是 Socket.io )。这样,一旦用户关闭选项卡,连接就会关闭,您可以使用此事件来清除他们的 session 。 (为了提高准确性,您可能希望跟踪同一用户的多个套接字连接,以防他们使用多个选项卡)
关于asp.net - 浏览器关闭时的 .net 核心 cookie 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42706209/