您的位置:首页 > 编程语言 > ASP

ASP.NET 2.0防止同名用户同时登陆

2020-03-02 01:59 393 查看

 想单点登录,我们可以使用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 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: