c# - 如何防止用户从多个位置或同一台电脑上的不同浏览器登录

标签 c# asp.net .net session session-state

我正在创建一个用户无法尝试多次登录的应用程序。如果特定用户登录,我的数据库标志值将变为设置为 1,这意味着具有相同用户名和密码的其他成员无法登录。

如果用户注销,我的数据库标志值将设置为 0。一切正常,但现在我有一个不同的问题,即当用户突然关闭浏览器没有注销页面或 session 超时然后自动数据库标志值应设置为 0。 现在我不知道该怎么做。请给我任何解决方案。

最佳答案

在您的 Global.asax 文件中,您有 Session_OnEnd()

public void Session_OnEnd()
{
    // Set flag to 0
}

如果您的 sessionState 设置为 INPROC(这是默认设置),如果您已将其手动调整为 StateServer,这将没问题> 或 SQL Server 则此事件将被忽略。

当浏览器关闭窗口时,您可以使用 onbeforeunload在 JavaScript 中

window.onbeforeunload = function(e) {
  // call an Ajax function to reset the state.
};

关于c# - 如何防止用户从多个位置或同一台电脑上的不同浏览器登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18591590/

相关文章:

c# - 将 C# 值传递给 Javascript

c# - 如何在第一个文档中恢复 MongoDB ChangeStream,而不仅仅是在我开始收听后进行更改

jquery - 通过 jQuery 将数组发送到支持 Ajax 的 WCF

.net - 使用网页创建桌面快捷方式

c# - 在 emgu CV 中使用 SURF 进行对象识别

c# - System.Net.Mail.MailMessage,将图像添加到邮件消息

c# - 克隆一个包含许多对象并列出的对象 C#

c# - OData 路径模板不是有效的 OData 路径模板

ASP.NET - 从表继承的 Ajax 日历扩展器 CSS

c# - 从日期列表中获取时间范围