如何检测用户何时因会话超时注销?
How to detect when users are logout with Session timeout?
我正在实施网络推送通知,它工作正常,除了一个会话超时问题。在我们的网站上,用户将在 Session 过期后注销。但是,那时用户可能已经关闭了选项卡/浏览器。
我如何检测会话过期的时间,以便我可以停止向该用户发送通知。
更新:
我的会话将在 30 分钟后过期(sessionState 超时 =“30”)。用户登录,然后在没有注销的情况下关闭选项卡; 30 分钟后,他将注销。但他仍然收到通知。
我的建议是,
将用户名或任何标识保存到会话变量,最后当单击注销时终止会话变量。
另一个选项是 ASP.NET 中的 TempData,它存储下一页的值。首先检查该变量,然后授予对组件的访问权限。
http://www.tutorialsteacher.com/mvc/tempdata-in-asp.net-mvc
当页面关闭时,tempdata 会自动被杀死。
希望这对您有所帮助。
谢谢
我不确定这是否是答案,但也许它对你有帮助。
首先,当用户会话结束时,您可以获得一个事件。所以在这种情况下你可以结束推送通知。
要实现这一点,只需将以下代码行添加到您的 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 分钟发送一个请求。我将其保存在数据库中(例如,我使用电子邮件地址进行授权)。在您的应用程序启动时,您创建一个后台任务。如果某些会话在最后 5 分钟内没有接到电话,它将每 5 分钟检查一次。因此,您可以结束会话,然后将调用 global.asax 中的事件。
希望对您有所帮助?
我正在实施网络推送通知,它工作正常,除了一个会话超时问题。在我们的网站上,用户将在 Session 过期后注销。但是,那时用户可能已经关闭了选项卡/浏览器。 我如何检测会话过期的时间,以便我可以停止向该用户发送通知。
更新: 我的会话将在 30 分钟后过期(sessionState 超时 =“30”)。用户登录,然后在没有注销的情况下关闭选项卡; 30 分钟后,他将注销。但他仍然收到通知。
我的建议是,
将用户名或任何标识保存到会话变量,最后当单击注销时终止会话变量。
另一个选项是 ASP.NET 中的 TempData,它存储下一页的值。首先检查该变量,然后授予对组件的访问权限。
http://www.tutorialsteacher.com/mvc/tempdata-in-asp.net-mvc
当页面关闭时,tempdata 会自动被杀死。
希望这对您有所帮助。 谢谢
我不确定这是否是答案,但也许它对你有帮助。
首先,当用户会话结束时,您可以获得一个事件。所以在这种情况下你可以结束推送通知。
要实现这一点,只需将以下代码行添加到您的 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 分钟发送一个请求。我将其保存在数据库中(例如,我使用电子邮件地址进行授权)。在您的应用程序启动时,您创建一个后台任务。如果某些会话在最后 5 分钟内没有接到电话,它将每 5 分钟检查一次。因此,您可以结束会话,然后将调用 global.asax 中的事件。
希望对您有所帮助?