浏览器关闭时的 .net 核心 cookie 身份验证
Posted
技术标签:
【中文标题】浏览器关闭时的 .net 核心 cookie 身份验证【英文标题】:.net core cookies authentication on browser close 【发布时间】:2017-07-31 01:54:34 【问题描述】:我在我的 .net 核心 mvc 应用程序中使用 cookie 身份验证。我的要求之一是在浏览器关闭时注销用户。我在应用程序中将滑动到期时间设置为 5 分钟。正如预期的那样,如果用户在 5 分钟后返回网站,用户将被重定向到登录页面,但如果用户在 5 分钟内返回,则用户会自动登录。如果浏览器关闭,有没有办法注销用户?
【问题讨论】:
【参考方案1】:没有直接检测浏览器是否关闭的方法,但是您当然可以检查选项卡是否已关闭。您可以使用以下方法,按复杂程度排列:
卸载事件
在您的<body>
标签上监听unload
事件:
<html>
<body onunload="tellServerBrowserClosed()">
<!--...-->
警告:即使您通过链接(在同一网站内)或浏览器的后退按钮离开网站也会触发。 (not a good solution
)
Ajax 信标
只需定期(20-60 秒间隔)从浏览器(应该有用户的 cookie)向 API 发送 Ajax GET
请求。当错过 2-3 个信标(API 调用)时,清除该用户的数据。
警告:您需要实现一个服务器端 cronjob 来处理过期的信标
WebSockets
使用 WebSocket 连接(可能是Socket.io)。这样,一旦用户关闭选项卡,连接就会关闭,您可以使用此事件清除他们的会话。 (为了提高准确性,您可能需要跟踪来自同一用户的多个套接字连接,以防他们使用超过 1 个标签)
【讨论】:
tellServerBrowserClosed
样品?
Ajax Beacon 和 WebSockets 真实世界示例?
是的,也考虑过是否可以使用 WebSockets。 SignalR 在 .NET Core 中很容易实现。设置一个集线器,跟踪相同的客户端连接,当计数为零时,从数据库中删除会话(如果存在)以上是关于浏览器关闭时的 .net 核心 cookie 身份验证的主要内容,如果未能解决你的问题,请参考以下文章