Asp.net 防止多次登录
我正在创建一个应用程序,其中用户无法尝试多次登录。如果某个特定的用户登录,我的数据库标志值将设置为1,这意味着没有其他具有相同用户名和密码的成员可以登录 如果用户注销我的数据库标志值设置为0。这一切正常,但现在我有一个不同的问题,即当用户在没有注销页面的情况下突然关闭浏览器或会话超时时,数据库标志值应自动关闭设置为0 我正在搜索这篇文章,一些文章说它可以使用global.asax文件实现。我试过了,但到目前为止什么也没发生。你能帮我吗 注意:关闭浏览器不会自动触发会话结束事件。会话结束时,会话结束事件将在一定时间后触发-此超时值在IIS中设置-默认设置为20分钟。将用户设置为非活动的唯一方法是依靠JavaScript向结束会话的Web方法发出ajax请求Asp.net 防止多次登录,asp.net,Asp.net,我正在创建一个应用程序,其中用户无法尝试多次登录。如果某个特定的用户登录,我的数据库标志值将设置为1,这意味着没有其他具有相同用户名和密码的成员可以登录 如果用户注销我的数据库标志值设置为0。这一切正常,但现在我有一个不同的问题,即当用户在没有注销页面的情况下突然关闭浏览器或会话超时时,数据库标志值应自动关闭设置为0 我正在搜索这篇文章,一些文章说它可以使用global.asax文件实现。我试过了,但到目前为止什么也没发生。你能帮我吗 注意:关闭浏览器不会自动触发会话结束事件。会话结束时,会话结
Session\u End
。将结束用户会话的所有代码放在此处:
protected void Session_End(object sender, EventArgs e)
{
// put your code that logs a user out here
}
window.onbeforeunload = function () {
// write an ajax call to a Web Method on your site that ends the session
}
Session\u End
。将结束用户会话的所有代码放在此处:
protected void Session_End(object sender, EventArgs e)
{
// put your code that logs a user out here
}
window.onbeforeunload = function () {
// write an ajax call to a Web Method on your site that ends the session
}
检测用户已关闭浏览器窗口的唯一安全方法是通过心跳。也就是说,浏览器不断向服务器发送请求,让服务器知道它仍然处于活动状态。由于ASP.net跟踪会话,它将在检测到不活动后调用会话结束处理程序
因此,如果您将会话超时设置为一分钟,并保持每45秒发送一次请求,则将以最多一分钟的延迟调用会话结束处理程序。检测用户已关闭浏览器窗口的唯一安全方法是通过心跳。也就是说,浏览器不断向服务器发送请求,让服务器知道它仍然处于活动状态。由于ASP.net跟踪会话,它将在检测到不活动后调用会话结束处理程序
因此,如果您将会话超时设置为1分钟,并保持每45秒发送一次请求,您的会话结束处理程序将被调用,最多延迟一分钟我猜您指的是global.asax,而不是globel.ascx。我是说您的权利,因为我错误地写了sorryHi@Aties,您可以发布您放在会话结束事件处理程序中的代码吗?Response.Write(“SessionID:+session.SessionID.ToString()+”用户键:+(string)session[“user”];if(Session[“user”!=null)//例如,这是在初次登录之后{string sKey=(string)Session[“user”];//访问缓存项会自动延长滑动过期时间string sUser=(string)HttpContext.Current.Cache[sKey];我猜你指的是global.asax而不是globel.ascx。我错写了sorryHi@Aties,你可以发布你放在会话中的代码吗?结束事件处理程序?Response.Write(“SessionID:+Session.SessionID.ToString()+”用户键:+(string)会话[“User”];if(会话[“User”!=null)//例如,这是在初始登录后{string sKey=(string)会话[“user”];//访问缓存项会自动延长滑动过期时间string sUser=(string)HttpContext.Current.Cache[sKey];祖父母皮特先生,这一切都很好,我也厌倦了这个文件,但当用户突然关闭浏览器或会话超时时,时间数据库值应该为“0”"意味着其他人可以登录。此步骤im not gettingAJAX请求被onbeforeunload处理程序阻止,您可以对其进行破解,使其几乎可以工作,但它不会适用于所有浏览器。此外,当您导航到另一个页面时,onbeforeunload会触发。简单的方法是客户端继续发送请求,让服务器保持会话正常ive,然后您可以将会话超时设置为略大于心跳间隔,请参阅我的回答Pete sir,这一切都很好,我在该文件中也很累,但当用户突然关闭浏览器或会话超时时,该时间数据库值已超出