ASP.NET 2.0防止同一用户同时登录

时间:2007-10-03 14:30:00 

要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已经登陆的用户名,但是还有一个问题就是要知道用户是什么时候离开系统的呢?这就要定期清除cache中的内容了,也就是设置一个cache的时间。

这个时间可以跟用户的session值联系起来,刚好当用户session值失效的时候该用户在cache里面的信息也会被清空.这样就达到了防止同时登陆的效果,具体代码如下:
  放在登陆成功的地方:


string key = TextBox1.Text; //用户名文本框设为cache关键字 
string uer = Convert.ToString(Cache[key]); //读取cache中用户相应的值
//判断cache中是否有用户的信息,如果没有相关的值,说明用户未登陆
if (uer == null || uer == String.Empty)
{
 //定义cache过期时间
 TimeSpan SessTimeout = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);
 //第一次登陆的时候插入一个用户相关的cache值,
 HttpContext.Current.Cache.Insert(key, key, null, DateTime.MaxValue, SessTimeout, System.Web.Caching.CacheItemPriority.NotRemovable, null);
 Session["ADMINID"] = TextBox1.Text;
 Response.Redirect("main.aspx");
}
else
{
 //重复登陆
 Response.Write("<script>alert(’您的账号已经登陆!’);window.location=’login.aspx’;</script>");


标签:登录,.net
0
投稿

猜你喜欢

  • 解析:以mysql_开始的未定义引用错误

    2008-12-19 17:58:00
  • 七十六个网站用户体验要点

    2010-08-11 14:52:00
  • Windows mysql命令行导入 .sql文件

    2010-12-03 16:12:00
  • XHTML1.0规范:您是否为img图片标签赋予alt属性

    2009-09-21 11:11:00
  • [整理版]防止Access数据库被下载的9种方法

    2007-08-10 09:31:00
  • 分面搜索(Faceted Search)

    2009-07-31 12:44:00
  • asp 小偷采集程序原理与常用函数方法

    2011-03-06 10:36:00
  • 无刷新dropdownlist并进行关联(js+xml)

    2007-09-23 12:13:00
  • SQL Server转换为XQuery及反向转换

    2009-01-20 13:32:00
  • ASP新闻分页,将一篇过长的文章分页,生成静态页面

    2011-04-10 11:14:00
  • 白话Block Formatting Context

    2010-08-03 12:36:00
  • 从mysql到oracle你必须了解的50件事儿

    2010-08-05 14:36:00
  • VBScript中变量作用域

    2007-11-02 10:03:00
  • 为什么定位会被float和clear影响!

    2008-11-10 11:06:00
  • ACCESS转SQL Server2000需要注意的问题

    2007-11-18 15:25:00
  • 女装类视觉设计分享

    2009-10-30 18:36:00
  • 如何利用SysOjects来获知数据库的信息?

    2010-01-01 15:43:00
  • 清除SQL被注入恶意病毒代码的语句

    2010-03-03 09:59:00
  • 用js更好地截取定长字符串

    2008-01-16 12:48:00
  • MYSQL教程:保证安全的备份MYSQL数据库的方法

    2010-03-03 17:12:00
  • asp之家 网络编程 m.aspxhome.com