如何检测用户何时因会话超时而注销?

孟广

我正在实施网络推送通知,它工作正常,除了会话超时的一个问题。在我们的网站上,用户将在会话过期后注销。但是,当时用户可能已经关闭了选项卡/浏览器。如何检测会话过期的时间,以便我可以停止向该用户发送通知。

更新:我的会话将在 30 分钟后过期(会话状态超时 =“30”)。用户登录,然后在不注销的情况下关闭选项卡;30 分钟后,他将注销。但他仍然收到通知。

达姆

我不完全确定这是否是答案,但也许它对你有帮助。

首先,您可以在用户会话结束时获得一个事件。因此,在这种情况下,您可以结束推送通知。

要实现这一点,只需将以下代码行添加到您的 Global.asax

    protected void Session_End(object sender, EventArgs e)
    {
       //End push notification
    }

要实现这一点,您会注意到用户关闭浏览器或点击您需要一些 javascript。在我的示例中,我使用 HTTP-Request 来执行此操作,但您也可以使用一些 Sockets 或其他所有内容来执行此操作。

    function SendPostRequest(eMail) {
    try {
        $.post(
            "/apiacc/sessionend",
            { Value: eMail },
            function (data, status, xhr) {
            }
        );
    } catch (error) {
        //Error catching
    }
}

    function SetInterval(eMail) {
        SendPostRequest(eMail);
        window.setInterval(() => { SendPostRequest(eMail); }, 300000);
    }

我只是在加载站点时启动该功能。所以 JavaScript 每 5 分钟发送一个请求。我保存在数据库中(例如,我使用电子邮件进行授权)。在您的应用程序启动时,您创建一个后台任务。如果某些会话在最后 5 分钟内没有接到电话,它将每 5 分钟检查一次。所以你可以结束会话,你的 global.asax 中的事件将被调用。

我希望这有帮助吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章