本发明涉及网络技术领域,尤其涉及一种限制同一用户账号登录终端数量的系统。
背景技术:
随着互联网技术的蓬勃发展,用户越来越普遍地通过终端设备接入互联网办理各种业务。在web应用系统中,出于安全性考虑,需要限制同一个用户账号登录多个终端设备的数量。
对于限制同一个用户账号登录多个终端设备的数量,现有技术中的方法如下:
(1)使用mysql数据库,在原有的用户账号的记录中,添加是否已登录、过期时间、设备唯一标识符字段。设定是否登录的条件为已登录、登录未过期、设备唯一标识一致,每次用户有操作时都更新过期时间值,如果一段时间没有操作,则登录状态过期。
(2)使用mysql数据库,在用户账号记录中添加token值,每次登录根据时间戳和其他信息生成一个新的token值,不断检测token值,如果token值变化,则说明用户账户在其他终端设备上登录了。
使用mysql数据库的效率比较低、无法实现动态时时限制同一个用户账号登录多个终端设备。
技术实现要素:
本发明提供了一种限制同一用户账号登录终端数量的系统,以解决现有技术中的限制方法效率低、无法实现动态时时限制同一个用户账号登录终端设备的数量问题。
本发明实施例提供了一种限制同一用户账号登录终端数量的系统,包括:第一终端和web服务器;
所述第一终端用于,向web服务器发送登录请求信息,所述登录请求信息中包含用户id和第一终端id;
所述web服务器包括第一调用模块、第二调用模块、处理模块、第一判断模块、第二判断模块和发送模块;
所述第一调用模块用于,从redis数据库中调用所述用户id对应的登录限制信息,所述登录限制信息包含所述用户id对应的所有第二终端id和登录条件;
所述第二调用模块用于,从所述redis数据库中调用所述用户id当前的所有登录信息;
所述处理模块用于,根据所述登录信息判断所述用户id和所述第一终端id是否满足所述登录条件,如果否,则从所述登录信息中提取登录时间,将所述登录时间与当前时间进行比对;
所述第一判断模块用于,判断所述登录时间是否超出预设的时间阈值;
所述第二判断模块用于,当所述登录时间超出预设的时间阈值时,判断所述用户id当前登录的第二终端的数量是否达到预设的登录数量阈值;
所述发送模块用于,当所述用户id当前登录的第二终端的数量达到预设的登录数量阈值时,根据所述第一终端id向所述第一终端发送限制所述用户id登录的提示信息。
进一步的,所述web服务器还包括更新模块:
所述更新模块用于,接收所述用户id当前登录的所有所述第二终端按照预设的时间周期发送的登录状态信息;
根据所述登录状态信息更新所述redis数据库中的登录信息。
进一步的,所述发送模块还用于:
当所述web服务器在预设的时间周期内没有接收到所述第二终端发送的登录状态信息时,向所述第二终端发送所述用户id退出登录的提示消息。
进一步的,在所述web服务器还包括设定模块;
所述设定模块用于,将用户id和第二终端id建立映射关系;
将所述映射关系和登录条件生成string类型的登录限制信息存储在所述redis数据库中。
进一步的,所述第二判断模块具体用于:
计算所述登录时间和所述当前时间的时间差值;
判断所述时间差值是否超出预设的时间阈值。
进一步的,所述发送模块还用于:
当所述登录时间超出预设的时间阈值时,则向所述登录时间对应的终端发送所述用户id退出登录的提示信息。
进一步的,所述登录信息具体包括:
所述用户id当前登录的所有第二终端的终端id和登录时间信息。
本发明实施例提供的限制同一用户账号登录终端数量的系统,第一终端向web服务器发送登录请求信息,登录请求信息中包含用户id和第一终端id;web服务器从redis数据库中调用用户id对应的登录限制信息,登录限制信息包含用户id对应的所有第二终端id和登录条件;判断用户id和第一终端id是否满足登录条件,如果否,则从redis数据库中调用用户id当前的所有登录信息;从登录信息中提取登录时间,将登录时间与当前时间进行比对;判断登录时间是否超出预设的时间阈值,如果否,则判断用户id当前登录的第二终端终端数量是否达到预设的登录数量阈值,如果是,则根据第一终端id向第一终端发送限制用户id登录的提示信息。本发明实施例提供的系统,能够实现动态时时限制同一个用户账号登录终端设备的数量,处理速度快,效率高。
附图说明
图1为本发明实施例提供的限制同一用户账号登录终端数量的系统的示意图。
图2为本发明实施例提供的限制同一用户账号登录终端数量的系统的工作流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明技术方案中的第一终端、第二终端具体包括具有处理能力的终端设备,例如,台式电脑、笔记本电脑、平板电脑、智能手机、智能电视等。
下面结合图1所示的限制同一用户账号登录终端数量的系统示意图,对本发明实施例提供的限制同一用户账号登录终端数量的系统进行详细说明。
如图1所示,本发明提供的限制同一用户账号登录终端数量的系统主要包括如下步骤:第一终端1和web服务器2;
第一终端1用于,向web服务器发送登录请求信息,登录请求信息中包含用户id和第一终端id;
web服务器2包括第一调用模块21、第二调用模块22、处理模块23、第一判断模块24、第二判断模块25和发送模块26;
第一调用模块21用于,从redis数据库中调用用户id对应的登录限制信息,登录限制信息包含用户id对应的所有第二终端id和登录条件;
第二调用模块22用于,从redis数据库中调用用户id当前的所有登录信息;
处理模块23用于,根据登录信息判断用户id和第一终端id是否满足登录条件,如果否,则从登录信息中提取登录时间,将登录时间与当前时间进行比对;
第一判断模块24用于,判断登录时间是否超出预设的时间阈值;
第二判断模块25用于,当登录时间超出预设的时间阈值时,判断用户id当前登录的第二终端的数量是否达到预设的登录数量阈值;
第二判断模块25具体用于:计算登录时间和当前时间的时间差值;判断时间差值是否超出预设的时间阈值。
发送模块26用于,当用户id当前登录的第二终端的数量达到预设的登录数量阈值时,根据第一终端id向第一终端发送限制用户id登录的提示信息。
发送模块26还用于:当web服务器在预设的时间周期内没有接收到第二终端发送的登录状态信息时,向第二终端发送用户id退出登录的提示消息。
发送模块26还用于:当登录时间超出预设的时间阈值时,则向登录时间对应的终端发送用户id退出登录的提示信息。
另外,web服务器还包括更新模块27和设定模块28:
更新模块27用于,接收用户id当前登录的所有第二终端按照预设的时间周期发送的登录状态信息;根据登录状态信息更新redis数据库中的登录信息。
设定模块28用于,将用户id和第二终端id建立映射关系;将映射关系和登录条件生成string类型的登录限制信息存储在redis数据库中。
其中,登录信息具体包括:用户id当前登录的所有第二终端的终端id和登录时间信息。
本发明实施例提供的限制同一用户账号登录终端数量的系统的各个部分的具体工作过程如图2所示,具体包括如下步骤:
步骤201,第一终端向web服务器发送登录请求信息。
其中,登录请求信息中包含用户id和第一终端id。用户id为用户的唯一标识符,例如用户的账号信息等。第一终端id为第一终端的唯一标识符,例如,终端的媒体访问控制(mediaaccesscontrol,mac)地址、终端的序列号等。
当用户账号登录第一终端时,第一终端接收用户输入的登录指令,根据登录指令向web服务器发送登录请求信息。
步骤202,web服务器从redis数据库中调用用户id对应的登录限制信息。
其中,登录限制信息包含用户id对应的所有第二终端id和登录条件。
在web服务器从redis数据库中调用用户id对应的登录限制信息之前,web服务器将用户id和第二终端id建立映射关系;将映射关系和登录条件生成string类型的登录限制信息存储在redis数据库中。
利用rredis数据库的string类型数据结构来存储用户的登录终端限制台数的配置信息,可以实现对每个用户动态的设置配置信息。
步骤203,从redis数据库中调用用户id当前的所有登录信息。
在从redis数据库中调用用户id当前的所有登录信息之前,用户id当前登录的所有第二终端按照预设的时间周期向web服务器发送登录状态信息;web服务器根据登录状态信息更新redis数据库中的登录信息。
当web服务器在预设的时间周期内没有接收到第二终端发送的登录状态信息时,web服务器向第二终端发送用户id退出登录的提示消息。
具体的,利用rredis数据库的hash类型数据结构来存储用户当前登录所有终端设备的登录信息,hash结构中使用keyfieldvalue写入数据,key的值为用户的唯一标识符,field的值为终端设备的唯一标识符,value的值取用户登录时的时间,设备终端会每隔一段时间上报用户的登录状态,在使用相同的keyfield写入数据时,覆盖历史数据,实现数据的更新,如果设备终端长时间未上报用户的登录状态默认该用户在该终端设备上下线。通过统计key中field的有效信息的数量来实现动态时时限制同一个用户账号登录终端台数的需求。
步骤204,根据登录信息判断用户id和第一终端id是否满足登录条件,如果否,则执行步骤105。
登录条件具体包括:第一终端id和用户id对应的多个第二终端id其中之一匹配,并且用户id当前登录的第二终端的数量小于预设的登录数量阈值。
判断用户id和第一终端id是否满足登录条件包括以下两方面:
第一,判断第一终端id和用户id对应的多个第二终端id其中之一匹配;
第二,通过用户id当前的登录信息来统计用户id当前登录的第二终端的数量,该数量小于预设的登录数量阈值。
只要不满足以上条件其中之一,则认定不满足登录条件。
步骤205,从登录信息中提取登录时间,将登录时间与当前时间进行比对。
登录信息具体包括:用户id当前登录的所有第二终端的终端id和登录时间信息。
如果不满足登录条件,则从登录信息中提取用户id当前登录的所有第二终端对应的登录时间信息,将登录时间与当前时间进行比较,目的是判断用户id当前的登录状态是否有效。
步骤206,判断登录时间是否超出预设的时间阈值,如果否,则执行步骤207。
计算登录时间和当前时间的时间差值;判断时间差值是否超出预设的时间阈值。当登录时间没有超出预设的时间阈值时,说明用户id当前登录的所有第二终端的登录状态均有效,执行步骤207。
当登录时间超出预设的时间阈值时,则向登录时间对应的终端发送用户id退出登录的提示信息。
例如,web服务器预设的有效的登录时间为15分钟,将用户id在当前登录的所有第二终端的登录时间与当前时间进行比较,如果登录超过15分钟,则当前登录状态为无效登录状态,web服务器向该第二终端发送提示信息,表明该用户已退出登录,更新数据库中的登录信息。
步骤207,判断用户id当前登录的第二终端的数量是否达到预设的登录数量阈值,如果是,则执行步骤208。
如果用户id当前登录的所有第二终端的登录状态均有效,则进一步判断用户id当前登录的所有第二终端的数量是否达到预设的登录数量阈值,如果没有达到,则允许用户id登录第一终端,如果已经达到,则限制登录,执行步骤208。
步骤208,根据第一终端id向第一终端发送限制用户id登录的提示信息。
本发明技术方案使用可基于内存亦可持久化的日志型、key-value数据库redis,使用redis中的string类型的数据结构来存储用户的登录限制信息,用hash类型的数据结构来存储用户登录终端设备的登录信息,通过对同一个用户账号有效登录终端设备信息的统计,达到动态时时的限制同一个用户账号登录多个终端设备的数量。
本发明实施例提供的限制同一用户账号登录终端数量的系统,第一终端向web服务器发送登录请求信息,登录请求信息中包含用户id和第一终端id;web服务器从redis数据库中调用用户id对应的登录限制信息,登录限制信息包含用户id对应的所有第二终端id和登录条件;判断用户id和第一终端id是否满足登录条件,如果否,则从redis数据库中调用用户id当前的所有登录信息;从登录信息中提取登录时间,将登录时间与当前时间进行比对;判断登录时间是否超出预设的时间阈值,如果否,则判断用户id当前登录的第二终端终端数量是否达到预设的登录数量阈值,如果是,则根据第一终端id向第一终端发送限制用户id登录的提示信息。本发明实施例提供的系统,能够实现动态时时限制同一个用户账号登录终端设备的数量,处理速度快,效率高。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件来实现,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。具体地,所述运算和控制部分都可以通络逻辑硬件实现,其可以是使用集成电路工艺制造出来的逻辑集成电路,本实施例对此不作限定。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明实施例的保护范围,凡在本发明实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。