|  | 设为首页 加入收藏 联系我们 |

|  | 首 页 行业资讯 网站运营 网络编程 数 据 库 网页设计 网络安全 网站推广 平面设计 服 务 器 电子商务 |

| 站内搜索： 热门关键字： 淘特　CMS　门户　信息港　房产　汽车　旅游　分类信息　下载　JspCms 内容管理系统 报社采编 |

现在位置：首页> 网络编程

编辑推荐

热门点击
·ASP.NET应用中缓存Oracle数据
·关于Asp代码与页面的分离
·ASP.NET 2.0功能扩展:跨页提交
·ASP.NET网络编程中常用到的27个函..
·ASP.NET如何在窗体和窗体之间传送数..
·Asp.net中防止用户多次登录的方法
·ASP.NET程序安全的基础知识
·ASP.NET中Server对象的方法
·关于ASP.NET编程中的嵌套If语句
·.NET程序员应该知道些什么

图片推荐
·.NET程序员应该知道些什么

Asp.net中防止用户多次登录的方法
作者： 日期：2010-03-31 出处： 点击:

在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]

- 返回首页
- 打印本文
- 加入收藏
- 返回顶部
- 关闭窗口

相关文章 | 查看留言 发表评论
用 户： |
内 容： |
验证码： |

关于本站　|　免责声明　|　联系我们　|　版权隐私　|　友情链接　|　网站地图
联系电话：0531-88511191 | 客服QQ：6410861 | Email：totcms@163.com | ICP备：88888号 Copyright © TotCms.com All Rights Reserved. 济南淘网科技 版权所有