ASP.NET 2.0防止同名用户同时登陆
想单点登录,我们可以使用SessionID和数据库结合。
使最后一个登录的人可以正常操作,而以前登录的人都会被踢出
首先建立登录信息表 SYS_LOG
字段
log_UserAccount 用户名
sessionID 客户端SessionID
接下来是程序的部分
用户A以用户名"MCMC"登录的时候,保存登录记录
string SID=Session.SessionID; //生成SessionID
然后执行
insert into SYS_LOG(log_UserAccount,sessionID) values ('MCMC','" + SID + "')
接下来,在进行每次操作的时候 先去登录表中查找最后一条 log_UserAccount='MCMC'的记录的sessionID字段
SELECT top 1 SYS_LOG.sessionID FROM SYS_LOG WHERE SYS_LOG.log_UserAccount='" + userid + "' order by logintime desc
====================================================================
如果返回记录集的 [sessionID]与当前IE窗口的 SID=Session.SessionID相同
那么就是说目前没有同名账户登录,A可以继续操作
接下来如果B也以"mcmc"登录,那么B也在登录表插入了新的登录信息
两条登录信息唯一差别就是 SID=Session.SessionID;的值不同,
那么
A此时操作时候,返回记录集的 [sessionID]与当前IE窗口的 SID=Session.SessionID就不再相同,
那么就是说目前有同名账户登录,A不可以继续操作,可以Session.Abandon();干掉自己,提示有新用户登录,跳转页面
此时B返回记录集的 [sessionID]与当前IE窗口的 SID=Session.SessionID相同
那么就是说目前没有同名账户登录,B可以继续操作
==================================================
原理是 用户名是可以相同的 但是SessionID每个IE窗口是唯一的
当在数据库中发现用户名是自己但是SessionID不是自己的话,先登录的用户就干掉自己,保证只能最后同名用户能正常操作
- 点赞
- 收藏
- 分享
- 文章举报

- asp+sql怎样才能跑的更快
- Asp.net 静态页面生成(1)----模板生成
- Asp.net 静态页面生成(2)----重载生成
- Jasper Brinkley Black Jersey
- ASP.NET MVC4 配置逻辑
- Never worry about ASP.NET AJAX’s .d again
- 第四次上机,ASP组件的使用
- 用asp.net还原与恢复sqlserver数据库
- FSO读取文本文件 ASP函数
- 每个ASP程序员常用的一些知识(基础)
- 实现asp.net只对个别控件实时访问数据库刷新数据
- 在开发ASP.NET程序前必看的msdn技术指南--
- DotNetNuke Announcements(from asp.net forums)
- Most Popular Questions and Answers on ASP.NET Whidbey(from asp.net forums,write by ASP.NET Team)
- ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath
- ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath
- 烧脑的asp数组提取统计问题
- ASP生成静态
- asp.net mvc(一) ----------简单封装成通用的List集合
- [ASP.NET 大牛之路]03 - C#高级知识点概要(2) - 线程和并发