MyException - 我的异常网
当前位置:我的异常网» PB » 限制同一账户同时多次登录系统,该如何解决

限制同一账户同时多次登录系统,该如何解决

www.MyException.Cn  网友分享于:2013-03-29  浏览:154次
限制同一账户同时多次登录系统
在实际应用中发现,有些用户为了方便,用自己的账户同时登录ERP系统,打开几个相同的界面,在操作数据保存时大意,往往造成数据错误。
  为防止类似错误发生,我想限制每个账户,同一时间内,只能登录一次ERP系统,刚开始我的想法很简单,就是直接做个表,在登录时候保存该用户的状态,退出后修改状态。
  但发现用户非法关闭系统时,系统无法自行修改用户的状态,造成用户第二登录时无法登录。我想应该从用户登录系统后的数据库连接进行判断并修改、保存用户的登录状态,但没有形成思路,请教各位高手,有何良策?

------解决方案--------------------
那人为因素恐怕不好控制吧,你要是直接按主机上开关按钮关机,程序是控制不了的,呵呵 ~
------解决方案--------------------
方法应该就是把用户登录状态记录在数据库中来判断,主要是异常关闭是没办法判断的,不管你用什么方法,都不能判断异常关闭的情况。对于这种不确定因素导致的问题,我能想到的就只有做一个类似杀毒软件那样的程序,监控ERP系统的运行状况,一旦发现异常关闭就清除登录用户的状态信息。
------解决方案--------------------
如果是mssql的话可以这样处理:
在账户表中增加一个smallint列spid和一个datetime列login_time,用来保存SQL事务的@@SPID 和sysprocess中的login_time,
账户登录时进行spid和login_time的校验:
C/C++ code
int li
select count(1) into :li from t_账户 
where exists(select 1 from master.dbo.sysprocesses 
     where spid = t_账户.spid and login_time = t_账户.login_time);
if li > 0 then //已经登录了
    messagebox("提示","您已经登录,不能再次登录!")
    return
end if
//可以登录则登录并更新spid和login_time
update a set a.spid = @@spid, a.login_time = b.login_time
  from t_账户 a, master.dbo.sysprocesses b 
  where b.spid = @@spid and a.user_id = :user_id;
...

------解决方案--------------------
以前讨论过,可以考虑在登录时,以用户名称来建立全局临时表。
若建立临时表失败,表明该用户已经登录,若建立成功,表明该用户第一次登录。
当用户异常离线时, 系统会自动删除相应的临时表。
------解决方案--------------------
4楼说的对 以前确实讨论过 但貌似没结果 

而且这中的关键 也是控制 异常退出的情况 ,相信你已经感觉到了

我以前也遇到这个问题 

但我的是单机版的 就用了一个简单的方法——同一个程序 只能开一个 给禁用多开


------解决方案--------------------
以前的帖子在这里
http://topic.csdn.net/u/20090924/11/1404CEAB-FED6-4C35-9F09-ED55C0F5435E.html
------解决方案--------------------
还有这里:数据库为oracle的
http://topic.csdn.net/u/20101118/00/5E9C1F63-255C-46F1-A236-DCFE83CEC537.html#r_69974659

sql的用spid, login_time (sysprocess)完全可以搞定。

------解决方案--------------------
探讨

还有这里:数据库为oracle的
http://topic.csdn.net/u/20101118/00/5E9C1F63-255C-46F1-A236-DCFE83CEC537.html#r_69974659

sql的用spid, login_time (sysprocess)完全可以搞定。

------解决方案--------------------
老早就用4楼的方法实现了。
------解决方案--------------------
顶下,一般用四楼的吧,通用性较好
------解决方案--------------------
楼主好像不是这个意思 吧。

你的意思是有的人在同一台机子上 打开多次 , 只要控制系统启动后不能再启动就可以了 ,看 
http://topic.csdn.net/t/20020717/11/880560.html

文章评论

10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
一个程序员的时间管理
一个程序员的时间管理
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
Java程序员必看电影
Java程序员必看电影
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我的丈夫是个程序员
我的丈夫是个程序员
那些争议最大的编程观点
那些争议最大的编程观点
 程序员的样子
程序员的样子
程序员应该关注的一些事儿
程序员应该关注的一些事儿
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
鲜为人知的编程真相
鲜为人知的编程真相
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员的鄙视链
程序员的鄙视链
漫画:程序员的工作
漫画:程序员的工作
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员和编码员之间的区别
程序员和编码员之间的区别
10个调试和排错的小建议
10个调试和排错的小建议
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
代码女神横空出世
代码女神横空出世
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
我是如何打败拖延症的
我是如何打败拖延症的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何成为一名黑客
如何成为一名黑客
每天工作4小时的程序员
每天工作4小时的程序员
程序员必看的十大电影
程序员必看的十大电影
编程语言是女人
编程语言是女人
旅行,写作,编程
旅行,写作,编程
老程序员的下场
老程序员的下场
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有