asp.net - 浏览器关闭时的 .net 核心 cookie 身份验证

标签 asp.net cookies .net-core

我在我的 .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/

相关文章:

asp.net - 无法从代码隐藏调用 App_Code 类

asp.net - 缓存 http 处理程序 .ashx 输出

asp.net - CSS媒体打印导致IE中打印时部分页面被截断

android - 将 Cookie 与 Robospice Retrofit 请求一起使用

c# - Entity Framework 。违反 UNIQUE KEY 约束

带有模型的 ASP.net MVC 2 RenderAction 抛出 URI 太长异常

javascript - 复选框控件不接受页面加载值

php - 数据库存储与 Cookies - 存储表单数据

c# - 使用 .NET Core 的 Linux/Unix 上的文件权限

asp.net - HttpContext 不包含 SignOutAsync 的定义