【问题标题】:.net core cookies authentication on browser close浏览器关闭时的 .net 核心 cookie 身份验证
【发布时间】:2017-07-31 01:54:34
【问题描述】:

我在我的 .net 核心 mvc 应用程序中使用 cookie 身份验证。我的要求之一是在浏览器关闭时注销用户。我在应用程序中将滑动到期时间设置为 5 分钟。正如预期的那样,如果用户在 5 分钟后返回网站,用户将被重定向到登录页面,但如果用户在 5 分钟内返回,则用户会自动登录。如果浏览器关闭,有没有办法注销用户?

【问题讨论】:

    标签: asp.net cookies .net-core


    【解决方案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 中很容易实现。设置一个集线器,跟踪相同的客户端连接,当计数为零时,从数据库中删除会话(如果存在)
    猜你喜欢
    • 2011-03-07
    • 2020-06-03
    • 2012-04-07
    • 2019-11-03
    • 2019-02-23
    • 2021-06-26
    • 1970-01-01
    • 2021-11-07
    相关资源
    最近更新 更多