用于登录用户的在线离线状态控制方法

文档序号:7689580阅读:443来源:国知局

专利名称::用于登录用户的在线离线状态控制方法
技术领域
:本发明涉及通信领域,尤其涉及一种用于登录用户的在线离线状态控制方法。
背景技术
:目前web上B/S架构的应用系统越来越盛行(B/S架构的应用系统是指浏览器/WEB服务才莫式的应用系统,即所有的应用程序都部署在WEB月良务端,而客户端只是简单的浏览器,如IE浏览器等,通过浏览器客户端发送请求到WEB服务端完成相应的业务处理),在此类的应用中从安全的角度出发,一般都会设计有用户登录控制等的处理流程。在这些WEB应用系统中有时为配合应用系统的需要需控制同一个用户不能同时在线,即在该用户没有退出或注销或超时前该用户是不能在另一个浏览器窗口再进行登录进入,因为有些系统如果存在该种情况的话会造成数据的不一致性以及4喿作上的并发冲突等,这就需要对登录用户的状态进行控制才能达到该目的。目前有些系统做到了用户状态的控制,一般的做法是在WEB月良务器的内存中记录用户的状态,而不是将用户状态记录在凄t据库中,这种做法在一个数据库服务器对应一个WEB服务的情况是足够了,因为其不需要同其他的WEB服务共享用户凄t据,^旦在多个WEB服务共享一个数据库服务器的用户数据,即用户状态共享的情况下处理就会略显不足,同时对用户状态的在线状态的解除不够全面。本发明旨在解决用户的在线离线状态在尽可能多地情况下的得到控制和一个数据库服务器对应一个或多个WEB服务的情况下的用户状态的共享和控制。
发明内容针对以上一个或多个问题,本发明提供了一种用于登录用户的在线离线状态控制方法,能够灵活地对用户状态进行共享和控制。该方法用于包括一个数据库月良务器、与其连4^的一个或多个WEB服务器、以及一个或多个浏览器的应用系统,一个或多个WEB服务器共享数据库服务器上的用户信息,其中,用户信息包括用户状态信息,方法包括与用户对应的WEB月良务器在需要的情况下^r测通过浏览器进行操作的用户的状态,并4艮据检测到的状态更新数据库服务器上的用户状态信息。在用户登录过程中,如果对应WEB服务器检测到用户的状态为在线,则提示用户已经在线或提示操作员和密码可能被盗用;如果对应WEB服务器检测到用户的状态为离线,则使用户正常登录并将数据库服务器中的用户状态信息修改为在线。在才企测到用户在预定的超时时间内没有在应用系统中进4亍4壬何操作的情况下,对应WEB服务器将数据库月良务器中的用户状态信息^修改为离线。在才企测到用户主动离开应用系统的情况下,对应WEB月良务器将数据库服务器中的用户状态信息修改为离线。在WEB服务器重新启动的情况下,将最近一次在WEB服务器上登录的用户对应的用户状态信息在数据库服务器中修改为离线。在应用系统出现异常或错误造成用户实际离线而凄史据库服务器中的用户状态信息为在线的情况下,对应WEB服务器将凄t据库月l务器中的用户状态信息修改为离线。上述的用户信息还包括以下至少之一用户名称、用户登录的WEB月良务器地址、用户的超时时间。本发明能够正确控制一个登录用户的在线离线状态,以达到控制相同用户不能同时登录在线的目的。此处所说明的附图用来^是供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是应用本发明的系统结构图;图2是应用本发明的用户登录处理流程图;图3是本发明用户主动退出时用户的状态控制流考呈图;图4是本发明用户关闭窗体退出时用户的状态控制流程图;图5是本发明超时检测用户状态控制流程图;图6是本发明人工清理用户状态的流程图;图7是本发明人工重新设置用户超时时间的流程图;以及图8是本发明WEB月良务器重新启动后用户状态控制流程图。具体实施方式下面参考附图,详细说明本发明的具体实施方式。本发明基于B/S架构应用系统,该系统包括一个数据库服务器、与其连接的一个或多个WEB服务器、以及一个或多个浏览器,一个或多个WEB服务器共享数据库服务器上的用户信息,其中,用户信息包括用户状态信息,本发明的方法包括与用户对应的WEB服务器在需要的情况下检测通过浏览器进行操作的用户的状态,并才艮据检测到的状态更新数据库服务器上的用户状态信息。在用户登录的过程中对应WEB月良务器4企测用户状态,如果已经在线则^是示用户已经在线,或^是示才喿作员和密码可能一皮盗用,如果检测到该用户是离线,则正常进入系统并修改数据库中该用户状态为在线。用户在应用系统设置的超时时间内没有对系统进行任何操作,这时需要将该用户状态《务改为离线。当用户主动离开应用系统,如主动注销或关闭浏览器等也需要将该用户的状态^^改为离线。当WEB服务重新启动时,需要将最近一次在在该WEB服务器上登录的用户在数据库中记录的状态修改为离线。当应用系统出现不可预知的各种异常或4晉误,造成用户的实际为离线而数据库中记录该用户为在线的情况,这时应用系统提供一种清除用户状态为离线的机制。应用本发明的方法进行用户状态控制的系统结构如图1所示,包括以下部分一个凄t据库月l务器、若干个WEB月l务器以及若干个浏览器。在图1的系统结构图中,多个WEB月良务器共用一个凄t悟库月艮务器,也就是说所有的用户信息是集中存放的,为各个WEB服务器所共享,这样一个用户的状态也会在各个WEB服务器中进行流转共享,WEB力良务器主要是完成业务逻辑的处理等。参考图2,应用本发明的用户登录流程如下步骤S200:用户登录处理在用户登录页面输入用户名称和密码提交给WEB服务器。步骤S210:用户信息验证处理,WEB服务器收到提交的用户名称和密码后进^v验i正,-睑i正用户存在与否,密石马是否正确。步骤S220:判断验证是否通过,如果通过则继续,否则l是示错误到登录页面。步骤S230:判断用户是否已在线,如果在线则在登录页面提示在线,登录失败。若用户状态为离线,则转入步艰《S240。步骤S240:判断定时监控线程实例是否已存在,若不存在则转到步骤S250处理,若已存在转到步骤S260处理。步艰《S250:创建定时监控线程实例。步骤S260:获取到创建的定时监控线程实例,并将登录用户信息,如用户名称、用户登录的WEB服务器IP地址、用户的超时时间等》文置到该线程创建的内存Hashtable表中。步-骤S270:同时将用户的名称、用户id,用户组id,片又限值等信息放置在本次会话session中,供页面文件检测超时使用,并设置超时时间,流禾呈结束。参考图3,应用本发明的用户通过注销动作进4亍退出系统处理流程,具体如下步骤S300:用户点击应用系统的注销按钮,进行退出系统操作。步骤S310:^是示是否确认退出。步艰《S320:如果确i人退出,则转入步艰《S330,否则返回。步驶《S330:乂人session会话中获耳又到用户一些信息,如用户名称、用户号id、用户组id等^f言息。步骤S340:判断定时监控线程实例存在与否,如果存在则继续步-骤S350,否则返回。步骤S350:从监控线程所管理的内存在线Hashtable中查找该用户,如果找到则将其,人在线Hashtable中删除。步骤S360:将数据库中该用户的状态修改为离线,并将session会话i殳置为无效,流程结束。参考图4,应用本发明的用户通过关闭窗体进4亍退出系统处理流程如下步骤S400:用户点击窗体的关闭键进行退出系统。步骤S410:关闭窗体是触发了窗体的onbeforeunload()和ommload()事件。步骤S420:在onunload()函数中判断是否是点击刷新按確丑所触发,如果是则不是退出系统,返回,如果不是则继续步骤S430。步骤S430:从session会话中获取到用户一些信息,如用户名称、用户号id、用户组id等信息。步骤S440:判断定时监控线程实例存在与否,如果存在则继续步驶《S450,否则返回。步骤S450:从监控线程所管理的内存在线Hashtable中查找该用户,如果找到则^1夺其乂人在线Hashtable中删除。步艰《S460:将数据库中该用户的状态^修改为离线,并将session会话设置为无效,流程结束。参考图5,应用本发明的用户登录超时流程控制,具体如下步骤S500:在监控线程体中进入循环,线程1木眠1分钟。步骤S510:1分钟后从内存在线Hashtable中如果该表不为空则取出首条用户记录。步骤S520:判断取出的用户的超时剩余时间是否小于等于0,若是则表明该用户在失见定的超时时间内没有才喿作了,则转入步骤S530,否则转入步骤S5做步骤S530:该用户已超时,并将其从在线内存Hashtable中删除该用户。步-骤S540:该用户还没超时,这时爿夸该用户的超时剩余时间减少1分钟。步骤S550:判断Hashtable中是否还有用户没处理完,若还有转入步驶《S560,否则流程结束。步骤S560:取出该用户4言息,继续转入步骤S520。参考图6,应用本发明的用户登录状态清理流程控制如下步骤S600:确认设置该用户状态为离线吗,如果是则转入步驶《S610,否则返回。步骤S610:进行数据库连接并将该用户状态设置为离线,流程结束。参考图7,应用本发明的重新设置用户超时时间流禾呈控制如下步骤S700:服务器程序获取到客户端用户请求,说明该用户在操作。步骤S710:从session中获取该用户信息,如用户名称等。步骤S720:根据用户名称从内存在线Hashtable中查找该用户。步驶《S730:判断是否找到,如果找到了则转入步艰《S740,否则转入步-银S750。步骤S740:重新设置Hashtable中该用户的超时剩余时间为類L定的超时时间。步骤S750:将该用户放入在线Hashtable中,并i殳置其超时剩余时间为A见定的超时时间,流禾呈结束。参考图8,本发明WEB服务重新启动后用户状态控制流程如下步骤S800:获取监控线程实例。步骤S810:判断该实例是否存在,若存在则表明WEB服务没有重新启动,则返回,若不存在则表明有可能是WEB服务重新启动了,则專争入步艰《S820(WEB月l务重新启动则该实例一定是不存在了的)。步骤S820:创建新的监控线程,线程中会创建内存在线用户的Hashtable表。步骤S830:清理最近一次在该WEB服务器上登录的用户在翁:据库中记录的用户状态为离线状态,流程结束。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1.一种用于登录用户的在线离线状态控制方法,其特征在于,用于包括一个数据库服务器、与其连接的一个或多个WEB服务器、以及一个或多个浏览器的应用系统,所述一个或多个WEB服务器共享所述数据库服务器上的用户信息,其中,所述用户信息包括用户状态信息,所述方法包括与用户对应的WEB服务器在需要的情况下检测通过所述浏览器进行操作的所述用户的状态,并根据检测到的状态更新所述数据库服务器上的用户状态信息。2.根据权利要求1所述的在线离线状态控制方法,其特征在于,在所述用户登录过程中,如果对应WEB服务器才企测到所述用户的状态为在线,则提示用户已经在线或提示操作员和密码可能被盗用;如果对应WEB服务器检测到所述用户的状态为离线,则使所述用户正常登录并将所述邀:才居库服务器中的用户状态信息修改为在线。3.根据权利要求1所述的在线离线状态控制方法,其特征在于,在才企测到所述用户在预定的超时时间内没有在所述应用系统中进行任何操作的情况下,对应WEB服务器将所述数据库服务器中的用户状态信息修改为离线。4.根据权利要求1所述的在线离线状态控制方法,其特征在于,在冲企测到所述用户主动离开所述应用系统的情况下,只于应WEB服务器将所述数据库服务器中的用户状态信息修改为离线。5.根据权利要求1所述的在线离线状态控制方法,其特征在于,在所述WEB力良务器重新启动的情况下,将最近一次在所述WEB月l务器上登录的用户对应的用户状态信息在所述翁:才居库服务器中修改为离线。6.根据权利要求1所述的在线离线状态控制方法,其特征在于,在所述应用系统出现异常或4普误造成用户实际离线而所述凝:据库服务器中的用户状态信息为在线的情况下,对应WEB月l务器将所述数据库服务器中的用户状态信息修改为离线。7.根据权利要求1至6中任一项所述的在线离线状态控制方法,其特征在于,所述用户信息还包括以下至少之一用户名称、用户登录的WEB服务器地址、用户的超时时间。全文摘要本发明提供了一种用于登录用户的在线离线状态控制方法,用于包括一个数据库服务器、与其连接的一个或多个WEB服务器、以及一个或多个浏览器的应用系统,一个或多个WEB服务器共享数据库服务器上的用户信息,其中,用户信息包括用户状态信息,方法包括以下步骤与用户对应的WEB服务器检测用户的状态;以及WEB服务器根据检测到的状态更新所述数据库服务器上的用户状态信息。文档编号H04L12/24GK101237351SQ200810082729公开日2008年8月6日申请日期2008年2月27日优先权日2008年2月27日发明者朱元龙,杨冬虎申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1