日期:2014-05-18  浏览次数:20496 次

如何实现一个用户名只能一个人登陆
在做   WEB应用的时候用到了登陆功能,如何来控制当一个用户在使用用户名为A   登录系统时,其它的用户不可以使用此用户名

------解决方案--------------------
可以参考网络中dhcp的思路。在数据库中增加一个字段,时间的。
在线访问时,每次更新该字段。
设定判断的更新周期。如果重复登录,该值在有效周期内就不允许登录。这样可以解决客户端非正常退出的问题。
也可以把该值放在session中。
问题是,增加了系统,尤其是数据库的负担。如果结合session,在接近有效周期的结束时才更新数据库中的字段,来减轻数据库负担。
另外,需要考虑设置一个合理的“老化周期”。个人认为,合法用户长时间不操作,可以让他腾出“茅坑”,可以被踢出去(允许在另外的客户端上登录)。
------解决方案--------------------
1.使用缓存记录用户在线列表,在线列表中保存每个在线用户:用户名,进入时间,最后访问时间,登入IP,最后访问地址等.
2.定义一个用户在线时长.如:5分钟,也就是说如果此用户在5分钟没有访问网站页面则将其算为离开.
3.用户登陆流程:
http://www.cnblogs.com/images/cnblogs_com/lzppcc/login.jpg
4.用户登入成功后,每访问一个页面.即按用户名,更新一下在线表中的最后访问时间,和最后访问网页地址.
5.使用定时器清除超过5分钟没有更新过的在线列表缓存中的用户.