想单点登录,我们可以使用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私信关注