易截截图软件、单文件、免安装、纯绿色、仅160KB

Asp.net中防止用户多次登录的方法


在web开发时,有的系统要求同一个用户在同一时间只能登录一次,也就是如果一个用户已经登录了,在退出之前如果再次登录的话需要报错。
常见的处理方法是,在用户登录时,判断此用户是否已经在Application中存在,如果存在就报错,不存在的话就加到Application中(Application是所有Session共有的,整个web应用程序唯一的一个对象):
string strUserId = txtUser.Text;
ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList;
if (list == null)
{
list = new ArrayList();
}
for (int i = 0; i < list.Count; i++)
{
if (strUserId == (list[i] as string))
{
//已经登录了,提示错误信息
lblError.Text = "此用户已经登录";
return;
}
}
list.Add(strUserId);
Application.Add("GLOBAL_USER_LIST", list);
当然这里使用Cache等保存也可以。
接下来就是要在用户退出的时候将此用户从Application中去除,我们可以在Global.asax的Session_End事件中处理:
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
string strUserId = Session["SESSION_USER"] as string;
ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList;
if (strUserId != null && list != null)
{
list.Remove(strUserId);
Application.Add("GLOBAL_USER_LIST", list);
}
}
这些都没有问题,有问题的就是当用户直接点浏览器右上角的关闭按钮时就有问题了。因为直接关闭的话,并不会立即触发Session过期事件,也就是关闭浏览器后再来登录就登不进去了。
这里有两种处理方式:
1、使用Javascript方式
在每一个页面中加入一段javascript代码:
function window.onbeforeunload()
{
if (event.clientX>document


相关文档:

在ASP.NET中导出excel表

在ASP.NET中导出excel表功能,在本机上调试通过,但是部署到服务器上时出错。
错误信息为
未能加载文件或程序集“Microsoft.Vbe.Interop, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。系统找不到指定的文件。
解决办法:
1、使用的动态库不对
将Web.Config文 ......

使用ASP.NET Global.asax 文件

        Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法。你可以使用这个文件实现应用程序安全性以及其它一些任务。下面让我们详细看一下如何在应用程序开发工作中使用这个文件。
概述
Global.asax 位于应用程序根目 ......

ASP.NET ASP.NET 登录控件概述

 
      ASP.NET 登录控件为 ASP.NET Web 应用程序提供了一种可靠的、无需编程的登录解决方案。默认情况下,登录控件与 ASP.NET 成员资格和 Forms 身份验证集成,以帮助实现网站的用户身份验证过程的自动化。
默认情况下,ASP.NET 登录控件以纯文本形式工作于 HTTP 上。如果您对安全性十分 ......

ASP.NET 如何:自定义 PasswordRecovery 控件


可以使用以下方法自定义 PasswordRecovery 控件:
·可以编辑显示的模板并更改控件的用户界面 (UI)。
·可以将 ASP.NET 主题应用到该控件。有关更多信息,请参见 ASP.NET 主题和外观概述。
·可以使用控件的属性(如 QuestionLabelText 或 InstructionTextStyle)修改其外观。
 
1、将一个 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号