AI智能
改变未来

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不是自己的话,先登录的用户就干掉自己,保证只能最后同名用户能正常操作

  • 点赞
  • 收藏
  • 分享
  • 文章举报

newtofy发布了2 篇原创文章 · 获赞 0 · 访问量 1246私信关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » ASP.NET 2.0防止同名用户同时登陆