如何检测用户何时在会话超时的情况下注销?



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

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

我不完全确定这是否是 anwser,但也许它对您有所帮助。

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

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

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

要获得您注意到用户关闭浏览器或点击您需要一些JavaScript。在我的示例中,我使用HTTP请求执行此操作,但您也可以使用某些套接字或其他所有内容执行此操作。

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 分钟发送一次请求。我保存在数据库中(例如,我使用E-mailadress进行授权(。在应用程序启动时,创建后台任务。如果某些会话,它将每 5 分钟检查一次,在过去 5 分钟内没有接到电话。因此,您可以结束会话,并将调用 global.asax 中的事件。

我希望这有帮助?

我的建议是,

  1. 将用户名或任何标识保存到会话变量中,最后在点击注销时杀死会话变量。

  2. 另一个选项是 ASP.NET 中的 TempData,它存储下一页的值。 首先检查该变量,然后授予对组件的访问权限。

http://www.tutorialsteacher.com/mvc/tempdata-in-asp.net-mvc

当页面关闭时,tempdata将自动终止。

希望这有所帮助。 谢谢。

最新更新