CN103118092B - 单次登录实现方法和装置 - Google Patents
单次登录实现方法和装置 Download PDFInfo
- Publication number
- CN103118092B CN103118092B CN201310027587.0A CN201310027587A CN103118092B CN 103118092 B CN103118092 B CN 103118092B CN 201310027587 A CN201310027587 A CN 201310027587A CN 103118092 B CN103118092 B CN 103118092B
- Authority
- CN
- China
- Prior art keywords
- session
- user
- name
- current connection
- recorded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 241000282485 Vulpes vulpes Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 235000008954 quail grass Nutrition 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种单次登录实现方法和装置,用于解决现有技术中用户的各种登录情况难以进行检测以及处理的问题,其中,单次登录实现方法包括:接收当前用户通过浏览器发送的登录请求,登录请求中包含第一用户名和第一应用地址,根据第一应用地址确定第一应用对象以及第一属性名,在存在与第一属性名对应的第一会话组时,进行第一判断,第一判断为判断第一会话组中是否存在与第一用户名对应的已记录的会话,根据第一判断的判断结果,对已有用户和/或当前用户进行处理,使得已记录的会话与当前连接的会话中至多有一个处于有效状态,从而实现用户的单次登录。
Description
技术领域
本发明涉及通信技术,尤其涉及一种单次登录实现方法和装置。
背景技术
在现有的云计算平台和大型应用系统中,用户通过浏览器形式的客户端登录服务器,浏览器形式的客户端采用http协议和服务器进行通信,服务器难以获知用户的状态,因此难以判断用户在不同的服务器、不同的机器或者不同的浏览器上的重复登录情况以及非正常下线情况,并对上述情况进行处理。
现有技术中,当用户通过浏览器形式的客户端登录到服务器后,登录界面作为母界面,弹出子窗口作为心跳窗口,心跳窗口定时检测客户端上是否有用户重复登录,若有用户重复登录,心跳窗口会弹出关于该用户的警告信息,当该用户手动下线,并关闭心跳窗口后,该用户才可以再次正常登录。这种方法难以检测多服务器系统中的各种登录情况以及非正常断线的登录情况,并针对各种登录情况进行相应的处理。
发明内容
本发明实施例提供了一种单次登录实现方法和装置,用于解决现有技术中用户的各种登录情况难以进行检测以及处理的问题。
本发明提供了一种单次登录实现方法,包括:
接收当前用户通过浏览器发送的登录请求,所述登录请求中包含第一用户名和第一应用地址;
根据所述第一应用地址,确定第一应用对象以及第一属性名;
在所述第一应用对象中存在与所述第一属性名对应的第一会话组时,进行第一判断,所述第一判断为判断所述第一会话组中是否存在与所述第一用户名对应的已记录的会话,所述第一会话组中包含登录到服务器的所有用户名对应的会话;
根据所述第一判断的判断结果,对已有用户和/或所述当前用户进行处理,使得所述已记录的会话与当前连接的会话中至多有一个处于有效状态,所述当前连接的会话为所述第一会话组中所述当前用户登录的浏览器对应的会话;
更新所述第一应用对象、所述第一会话组、所述已记录的会话以及所述当前连接的会话。
本发明还提供了一种单次登录实现装置,包括:
第一接收模块,用于接收当前用户通过浏览器发送的登录请求,所述登录请求中包含第一用户名和第一应用地址;
确定模块,用于根据所述第一应用地址,确定第一应用对象以及第一属性名;
第一判断模块,与所述确定模块和所述第一接收模块相连接,用于在所述第一应用对象中存在与所述第一属性名对应的第一会话组时,进行第一判断,所述第一判断为判断所述第一会话组中是否存在与所述第一用户名对应的已记录的会话,所述第一会话组中包含登录到服务器的所有用户名对应的会话;
第一处理模块,与所述第一判断模块相连接,用于根据所述第一判断模块的判断结果,对已有用户和/或所述当前用户进行处理,使得所述已记录的会话与当前连接的会话中至多有一个处于有效状态,所述当前连接的会话为所述当前用户登录的浏览器对应的会话;
更新模块,用于更新所述第一应用对象、所述第一会话组、所述已记录的会话以及所述当前连接的会话。
本发明提供的单次登录实现方法和装置,通过判断服务器中是否存在与第一属性名对应的第一会话组以及判断第一会话组中是否存在与第一用户名对应的已记录的会话,检测当前用户的登录情况,并根据判断结果对当前用户进行处理,使得已记录的会话与当前连接的会话中至多有一个处于有效状态,进而实现用户的单次登录。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的单次登录实现方法一个实施例的流程图;
图2为本发明提供的单次登录实现方法又一个实施例的流程图;
图3为本发明提供的单次登录实现方法又一个实施例的流程图;
图4为本发明提供的单次登录实现方法另一个实施例的流程图;
图5为本发明提供的单次登录实现装置一个实施例的结构图;
图6为本发明提供的单次登录实现装置又一个实施例的结构图;
图7为本发明提供的单次登录实现装置另一个实施例的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的单次登录实现方法一个实施例的流程图,如图1所示,包括:
步骤101、服务器接收当前用户通过浏览器发送的登录请求,登录请求中包含第一用户名和第一应用地址。
其中,当前用户登录的服务器接收当前用户的登录请求,登录请求中还可以包括密码,服务器对第一用户名和密码进行验证,若验证没有通过,则服务器拒绝当前用户的登录请求。
另外,服务器中包含多个应用对象,第一应用地址可以用于确定第一应用对象以及第一属性名。
步骤102、服务器根据第一应用地址,确定第一应用对象以及第一属性名。
本实施例中针对用户登录服务器这个应用,只用到第一应用对象中与第一属性名对应的第一会话组,因此,根据第一应用地址,就可以确定第一应用对象以及第一属性名。
本实施例中的应用对象,可以采用动态网页技术标准(JavaServer Pages,JSP)、动态服务器页面(Active Server Page,ASP)、超文本预处理语言(Hypertext Preprocessor,PHP)等语言中的应用对象application,也可以采用其他语言中与本实施例中的application对象功能相同的application对象。优选的,本实施例采用JSP中的application对象。
步骤103、在第一应用对象中存在与第一属性名对应的第一会话组时,服务器进行第一判断,第一判断为判断第一会话组中是否存在与第一用户名对应的已记录的会话,第一会话组中包含登录到服务器的所有用户名对应的会话。
application对象中以二元组的形式存储有属性名和属性名对应的会话组,其中,第一属性名为服务器预先设置好的,与application对象中的其他程序的属性名不重复即可。会话组可以为Java语言中的HashMap对象,也可以是与本实施例中的HashMap对象功能相同的其他对象。会话可以为session对象,每个登录用户对应一个session对象,session对象用于记录用户的登录状态。
步骤104、服务器根据第一判断的判断结果,对已有用户和/或当前用户进行处理,使得已记录的会话与当前连接的会话中至多有一个处于有效状态,当前连接的会话为第一会话组中当前用户登录的浏览器对应的会话。
其中,每个浏览器上都会保存一个会话,会话中包含登录浏览器的用户的用户名。会话处于有效状态指的是会话对应的用户登录到服务器上,且没有退出登录。会话没有处于有效状态指的是会话对应的用户没有登录到服务器上,或者,登录到服务器上之后正常退出登录。当用户登录到服务器上之后,非正常退出登录,例如用户所使用的客户机断电,则处于有效状态的会话经过一定时间长度后,自动转换为非有效状态。
步骤105、服务器更新第一应用对象、第一会话组、已记录的会话以及当前连接的会话。
本发明实施例提供的单次登录实现方法和装置,通过判断服务器中是否存在与第一属性名对应的第一会话组以及判断第一会话组中是否存在与第一用户名对应的已记录的会话,检测当前用户的登录情况,并根据判断结果对当前用户进行处理,使得已记录的会话与当前连接的会话中至多有一个处于有效状态,进而实现用户的单次登录。
图2为本发明提供的单次登录实现方法又一个实施例的流程图,如图2所示,在图1所示实施例的基础上,步骤104具体还包括:
步骤1041、在第一判断的判断结果为第一会话组中没有存在与第一用户名对应的已记录的会话时,服务器判断当前连接的会话对应的用户名是否为空;
在当前连接的会话对应的用户名不为空时,拒绝当前用户的登录请求,并对当前连接的会话对应的用户名所对应的用户进行登录注销处理;
在当前连接的会话对应的用户名为空时,接受当前用户的登录请求。
其中,当前用户在服务器上的第一会话组中没有与第一用户名对应的已记录的会话,说明当前用户在服务器上是第一次登录,而当前连接的会话对应的用户名不为空的一种说明是,当前用户登录服务器时使用的浏览器上已经有别的用户登录,因此,步骤1041中,当前连接的会话对应的用户名不为空时,对应的当前用户的登录情况中的其中两种情况为:第一种为用户A登录后,在会话结束前,当前用户B在同一台机器上用同一个浏览器再登录一次;第二种为用户A在机器X上登录后,用Ctrl+T(或Ctrl+N)开一新窗口,并在会话结束前,在新窗口中当前用户B登录。在上述两种情况下,当前用户B登录的浏览器上已经有用户A登录,而且用户A没有退出登录,则当前用户B登录不成功,用户A被注销,用户A或当前用户B再次登录时,才有可能成功。
用户可能的登录情况有很多种,对于没有列举出来的情况,不一一进行说明,但经过上述流程得出与本发明相同的结论的用户的其他登录情况,都属于本发明中用户可能的登录情况。
进一步地,步骤1041中,在对当前连接的会话对应的用户进行登录注销处理后,步骤105中更新第一应用对象、第一会话组、已记录的会话以及当前连接的会话的操作具体为:删除第一会话组中的当前连接的会话,并用更新后的第一会话组替换第一应用对象中的原第一会话组,原第一会话组指的是没有经过更新的第一会话组;
其中,当前用户在服务器上的第一会话组中没有与第一用户名对应的已记录的会话,说明当前用户在服务器上是第一次登录,而当前连接的会话对应的用户名为空,说明当前用户登录服务器时使用的浏览器上没有别的用户登录或者别的登录用户已经退出,因此,步骤1041中,当前连接的会话对应的用户名为空,对应的当前用户的登录情况中的其中三种情况为:第一种为用户A登录后,在会话结束后,当前用户B在同一台机器上用同一个浏览器再登录一次;第二种为用户在机器X上打开因特网浏览器(Internet Explorer,IE),并用Ctrl+T(或Ctrl+N)打开一个窗口,当前用户B登录;第三种为用户A在机器X上登录后,用Ctrl+T(或Ctrl+N)开一新窗口,并在会话结束后,在新窗口中当前用户B登录。上述三种情况下,用户B登录成功。
进一步地,步骤1041中,在接受当前用户的登录请求后,更新操作具体为:将当前连接的会话中的用户名设置为当前用户名,并保存到第一会话组中,并用更新后的第一会话组替换第一应用对象中的原第一会话组。
同一个浏览器指的是:在第一个浏览器的窗口中采用Ctrl+T(或Ctrl+N)新建的窗口或者标签为第二个浏览器的窗口或者标签,则第一个浏览器与第二个浏览器为同一个浏览器;不同的浏览器指的是:在第一个浏览器的窗口中采用文件-新建-窗口打开的浏览器或者双击桌面上的浏览器图标或者在开始菜单里打开的浏览器都为第三个浏览器,则第一个浏览器与第三个浏览器为不同的浏览器。本发明实施例中提到的另一个浏览器,指的都是第三个浏览器,与第一个浏览器为不同的浏览器。
另外,本发明实施例中使用的浏览器主要为IE浏览器,也可以为客户机所能兼容的各种浏览器类型及各种浏览器版本,如火狐浏览器(MozillaFirefox),苹果公司浏览器(safari),谷歌浏览器(Google chrome),360浏览器,搜狐浏览器等。客户机为连接服务器的计算机。
步骤1042、在第一判断的判断结果为第一会话组中存在已记录的会话时,服务器进行第二判断,第二判断为判断已记录的会话是否处于有效状态。
当session对象处于有效状态时,代表session对象所对应的用户处于有效登录状态,而当session对象处于非有效状态时,代表session对象所对应的用户处于无效登录状态。
步骤1043、服务器根据第二判断的判断结果进行处理。
其中,在第二判断的判断结果为已记录的会话没有处于有效状态时,服务器判断当前连接的会话对应的用户名是否为空;
在当前连接的会话对应的用户名不为空时,删除已记录的会话,接受当前用户的登录请求;
在当前连接的会话对应的用户名为空时,接受当前用户的登录请求。
其中,当前用户在服务器上的第一会话组中存在与第一用户名对应的已记录的会话,说明当前用户在服务器上不是第一次登录,而已记录的会话没有处于有效状态,说明当前用户的上一次登录已经退出,而当前连接的会话对应的用户名不为空的另一种说明是当前用户登录服务器时使用的浏览器上已经有用户登录,并正在使用,或者是有用户曾经登录,但登录的用户已经退出,因此,当前连接的会话对应的用户名不为空时,对应的当前用户的登录情况中的其中两种为:第一种为用户登录后,在会话结束后,用户在同一台机器上用同一个浏览器再登录一次,在这种登录情况下,服务器删除已记录的会话,用户的再次登录成功。第二种为用户在机器X上登录后,用Ctrl+T(或Ctrl+N)开一新窗口,并在会话结束后,在新窗口中再次登录。在上述两种登录情况下,用户的再次登录,即当前用户的登录成功。
进一步地,在当前连接的会话对应的用户名不为空时,接收当前用户的登录请求后,更新操作具体为:从第一会话组中取出当前连接的会话,将当前连接的会话的用户名设置为第一用户名,将当前连接的会话设置为第一用户名对应的会话,保存到第一会话组中,并用更新后的第一会话组替换第一应用对象中的原第一会话组。
其中,当前用户在服务器上的第一会话组中存在与第一用户名对应的已记录的会话,说明当前用户在服务器上不是第一次登录,而已记录的会话没有处于有效状态,说明当前用户的上一次登录已经退出,而当前连接的会话对应的用户名为空,说明当前用户登录服务器时使用的浏览器上没有用户登录,因此,当前连接的会话对应的用户名为空,对应的当前用户的登录情况中的其中四种情况为:第一种为用户在机器X上登录后,在会话结束后,用户在同一台机器上开另一个浏览器再登录一次;第二种为用户登录后,客户机因断电关闭,用户重新启动机器后登录;第三种为用户A登录后,在会话结束后,用户B在同一台机器上开另一个浏览器再登录一次;第四种为用户登录后,机器因断电关闭,用户到另一台机器再次登录。在第三种情况下,用户B登录成功,在其他三种情况下,用户登录成功。
更进一步地,在当前连接的会话对应的用户名为空时,接受当前用户的登录请求后,更新操作具体为:将当前连接的会话保存到第一会话组中,并用更新后的第一会话组替换第一应用对象中的原第一会话组。
用户可能的登录情况有很多种,对于没有列举出来的情况,不一一进行说明,但经过上述流程得出与本发明相同的结论的用户的其他登录情况,都属于本发明中用户可能的登录情况。
再进一步地,在第二判断的判断结果为已记录的会话处于有效状态时,服务器进行第三判断,第三判断为判断已记录的会话与当前连接的会话是否对应同一个客户机的同一个浏览器。
再进一步地,在第三判断的判断结果为已记录的会话与当前连接的会话对应同一个客户机的同一个浏览器时,已记录的会话与当前连接的会话是同一个会话,拒绝当前用户的登录请求,并对当前连接的会话对应的用户名所对应的用户进行登录注销处理,同一个会话是指已记录的会话与当前连接的会话对应的用户名相同,且保存在第一会话组中;
在第三判断的判断结果为已记录的会话与当前连接的会话不对应同一个客户机的同一个浏览器时,将已记录的会话置为非有效状态;
判断当前连接的会话对应的用户名是否为空;
在当前连接的会话对应的用户名不为空时,拒绝当前用户的登录请求,对当前连接的会话对应的用户名所对应的用户进行登录注销处理;
在当前连接的会话对应的用户名为空时,接受当前用户的登录请求。
其中,第一用户名对应的已记录的会话处于活动状态,说明当前用户在服务器上已经登录,若已记录的会话与当前连接的会话不对应同一个客户机的同一个浏览器,说明已记录的会话与当前连接的会话对应不同的客户机或者对应同一客户机的不同浏览器,将其他客户机或者浏览器上的已记录的会话置为非活动状态后,若当前连接的会话对应的用户名不为空,说明当前用户登录的浏览器上有别的用户登录,则拒绝当前用户的登录请求,并将当前连接的会话对应的用户名所对应的用户进行登录注销处理;若当前连接的会话对应的用户名为空,说明当前用户登录的浏览器上没有别的用户登录,则用户可能的登录情况中的两种为:第一种为用户在机器X上登录后,在会话结束前,用户在机器Y上再次登录;第二种为用户在机器X上登录后,在会话结束前,用户在同一台机器上开另一个浏览器再登录一次。在这两种登录情况下,用户的再次登录成功。
进一步地,对当前连接的会话对应的用户名所对应的用户进行登录注销处理后,更新操作具体为:删除第一会话组中的当前连接的会话,并用更新后的第一会话组替换第一应用对象中的原第一会话组。
接受当前用户的登录请求后,更新操作具体为:将当前连接的会话中的用户名设置为当前用户名,并保存到第一会话组中,并用更新后的第一会话组替换第一应用对象中的原第一会话组。
若第一用户名对应的已记录的会话处于活动状态,且已记录的会话与当前连接的会话对应同一个客户机的同一个浏览器,说明在当前用户登录的浏览器上当前用户已经登录过,且没有退出登录,此时,用户可能的登录情况中的两种为:第一种为用户登录后,在会话结束前,用户在同一台机器上用同一个浏览器再登录一次;第二种为用户在机器X上登录后,用Ctrl+T(或Ctrl+N)开一新窗口,并在会话结束前,在新窗口中再次登录。在这两种用户可能的登录情况下,用户的再次登录不成功,并且服务器注销用户的第一次登录。
用户可能的登录情况有很多种,对于没有列举出来的情况,不一一进行说明,但经过上述流程得出与本发明相同的结论的用户的其他登录情况,都属于本发明中用户可能的登录情况。
再进一步地,在图1所示实施例的步骤102和步骤103之间,还包括:
服务器在第一应用对象中不存在与第一属性名对应的第一会话组时,接受当前用户的登录请求,并建立与第一属性名对应的第一会话组。
其中,在第一应用对象中不存在与第一属性名对应的第一会话组,说明服务器中没有用户登录过。
进一步地,建立与第一属性名对应的第一会话组后,更新操作具体为:将建立的第一会话组保存到第一应用对象中。
其中,在第一应用对象中不存在与第一属性名对应的第一会话组时,用户可能的登录情况中的其中一种为:用户第一次登录。
用户可能的登录情况有很多种,对于没有列举出来的情况,不一一进行说明,但经过上述流程得出与本发明相同的结论的用户的其他登录情况,都属于本发明中用户可能的登录情况。
另外,本发明实施例中只描述了对用户的一次登录和再次登录的情况进行判断和处理,本发明实施例同样适用与对用户的三次登录或者用户的四次以上的登录情况进行判断和处理。例如,用户在机器X上登录后,用Ctrl+T(或Ctrl+N)开一新窗口,并在会话结束前,在新窗口中再次登录,用户在该新窗口中进行第三次登录,则按照本发明实施例的判断流程,可得用户的第一次登录成功,用户第二次登录时,会注销用户的第一次登录,同时第二次登录不成功,用户A的第三次登录成功。又例如,用户A在机器X上第一次登录后,用Ctrl+T(或Ctrl+N)开一新窗口,并在会话结束前,用户B在新窗口中第一次登录,用户B在该新窗口中第二次登录,按照本发明实施例的判断流程,可得用户A的第一次登录成功,用户B的第一次登录不成功,并且会注销用户A的第一次登录,用户B的第二次登录成功。
本发明实施例提供的单次登录实现方法,通过判断服务器中是否存在第一属性名对应的第一会话组、判断第一会话组中是否存在与第一用户名对应的已记录的会话、判断已记录的会话是否处于有效状态、判断已记录的会话与当前连接的会话是否对应同一个客户机的同一个浏览器以及判断当前连接的会话是否为空,从而确定用户的各种登录情况,并针对用户的各种登录情况分别进行处理,实现用户的单次登录。
图3为本发明提供的单次登录实现方法又一个实施例的流程图,如图3所示,在第一应用对象为application对象、第一会话组为HashMap对象以及会话为session对象的实施场景下,包括:
步骤301、当前用户将第一用户名、第一应用地址以及密码发送给服务器。
步骤302、服务器验证第一用户名和密码是否正确,若正确,进行步骤303,若不正确,当前用户登录失败。
步骤303、服务器根据第一应用地址,确定第一application对象以及第一属性名userObject。
其中,userObject也可以替换为其他的可以唯一代表属性名的名字,如user-object或者userObjectA等。
步骤304、服务器判断第一application对象中是否存在与第一userObject对应的第一HashMap对象,若存在,进行步骤305,若不存在,进行步骤319。
步骤305、服务器判断第一HashMap对象中是否存在与第一用户名对应的已记录的session对象,若存在,进行步骤309,若不存在,进行步骤306。
其中,HashMap对象也可以替换为能完成本发明实施例中HashMap对象的功能的其他对象。
步骤306、服务器判断当前连接的session对象对应的用户名是否为空,若不为空,进行步骤307,若为空,进行步骤308。
步骤307、拒绝当前用户的登录请求,并对当前连接的session对象对应的用户名所对应的用户进行登录注销处理。
步骤308、接受当前用户的登录请求。
步骤309、判断已记录的session对象是否处于有效状态,若没有处于有效状态,进行步骤310,若处于有效状态,进行步骤313。
步骤310、判断当前连接的session对象对应的用户名是否为空,若不为空,进行步骤311,若为空,进行步骤312。
步骤311、删除已记录的session对象,接受当前用户的登录请求。
步骤312、接受当前用户的登录请求。
步骤313、判断已记录的session对象与当前连接的session对象是否对应同一个客户机的同一个浏览器,若对应同一个客户机的同一个浏览器,进行步骤314,若不对应同一个客户机的同一个浏览器,进行步骤315。
步骤314、拒绝当前用户的登录请求,并对当前连接的session对象对应的用户名所对应的用户进行登录注销处理。
步骤315、将已记录的会话置为非有效状态。
步骤316、判断当前连接的session对象对应的用户名是否为空,若不为空,进行步骤317,若为空,进行步骤318。
步骤317、拒绝当前用户的登录请求,并对当前连接的session对象对应的用户名所对应的用户进行登录注销处理;
步骤318、接受当前用户的登录请求。
步骤319、接受当前用户的登录请求,并创建与userObject对应的HashMap对象。
本发明实施例提供的单次登录实现方法,通过判断服务器中是否存在第一属性名userObject对应的第一HashMap对象、判断第一HashMap对象中是否存在与第一用户名对应的已记录的session对象、判断已记录的session对象是否处于有效状态、判断已记录的session对象与当前连接的session对象是否对应同一个客户机的同一个浏览器以及判断当前连接的会话对应的用户名是否为空,确定用户的登录情况,并针对用户的登录情况进行处理,实现用户的单次登录。
图4为本发明提供的单次登录实现方法另一个实施例的流程图,如图4所示,在图1或图2所示实施例的基础上,还包括:
步骤106、服务器接收其他服务器发送的更新请求,更新请求中包含第二用户名和第二应用地址。
步骤107、根据第二应用地址,确定第二应用对象以及第二属性名。
步骤108、判断第二应用对象中是否存在与第二属性名对应的第二会话组。
在云计算平台和大型应用系统中,有多台服务器同时处理用户的登录请求,当一个服务器上新增加了会话组或者新增加了会话时,该服务器需要对应用系统中的其他服务器进行更新,同时该服务器也可以接收其他服务器的更新请求,对该服务器本身进行更新。
另外,当服务器新增加了会话组或者在已知会话组中新增加了会话,服务器需要对其他的服务器进行更新。例如在步骤102和步骤103之间在不存在与属性名对应的会话组时的四种用户可能的登录情况下,服务器新增加了会话组。
步骤109、服务器根据判断结果进行更新。
进一步地,步骤109具体还可以包括:
在第二应用对象中不存在与第二属性名对应的第二会话组时,创建与第二属性名对应的第二会话组;
在第二应用对象中存在与第二属性名对应的第二会话组时,获取第二会话组;
在与第二属性名对应的第二会话组中存在与第二用户名对应的会话时,将第二用户名对应的会话置于非有效状态。
例如,当服务器的第二application对象中不存在与第二属性名userObject对应的会话组HashMap对象时,服务器会创建一个与第二属性名userObject对应的第二HashMap对象;当第二application对象中存在与第二属性名userObject对应的第二HashMap对象时,服务器会获取第二HashMap对象,判断第二HashMap对象中是否存在与第二用户名对应的session对象,并将该session对象置于非有效状态。
在图4所示实施例的基础上,更新的项还可以包括应用对象、会话组和会话,应用对象包括属性名及其对应的会话组,会话组包括用户名及其对应的会话,会话包括用户属性及其对应的用户名,根据判断结果进行更新,包括:
服务器将第二用户名记录在用户码字段中。
用户码字段可以为变量,用于存放其他服务器向本服务器发送的更新请求中所携带的第二用户名。
在第二应用对象中不存在与第二属性名对应的第二会话组时,服务器创建新的会话组,并将新的会话组设置为第二属性名对应的第二会话组。
在第二应用对象中存在与第二属性名对应的第二会话组时,服务器将第二会话组记录在会话组变量中。
在会话组变量中存在与用户码字段对应的会话时,服务器将该会话置为非有效状态后,删除该会话,得到更新后的会话组变量。
服务器将更新后的会话组变量的内容设置为第二属性名对应的第二会话组。
例如,服务器将从更新请求中获得的第二用户名记录在变量strUserCode中,若第二application对象中的第二属性名userObject没有对应的第二HashMap对象,则服务器创建新的第二HashMap对象,并将第二userObject对应到该第二HashMap对象;若第二application对象中的第二userObject有对应的第二HashMap对象,服务器取出该第二HashMap对象放在变量userSession中,判断userSession中与strUserCode中的第二用户名对应的session对象,并将该session对象置于非有效状态,删除该session对象,之后将application对象的userObject对应的HashMap对象设为变量userSession的内容。
本发明实施例提供的单次登录实现方法,通过接收其他服务器的更新请求,并根据更新请求更新本服务器,从而实现应用系统中多服务器之间数据的一致性,在包含多个服务器的应用系统中实现用户的单次登录。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图5为本发明提供的单次登录实现装置一个实施例的结构图,如图5所示,包括:
第一接收模块51,用于接收当前用户通过浏览器发送的登录请求,登录请求中包含第一用户名和第一应用地址;
确定模块52,用于根据第一应用地址,确定第一应用对象以及第一属性名;
第一判断模块53,与确定模块52和第一接收模块51相连接,用于在存在与第一属性名对应的第一会话组时,进行第一判断,第一判断为判断第一会话组中是否存在与第一用户名对应的已记录的会话,第一会话组中包含登录到服务器的所有用户名对应的会话;
第一处理模块54,与第一判断模块53相连接,用于根据第一判断模块的判断结果,对已有用户和/或当前用户进行处理,使得已记录的会话与当前连接的会话中至多有一个处于有效状态,当前连接的会话为第一会话组中当前用户登录的浏览器对应的会话。
更新模块55,用于更新第一应用对象、第一会话组、已记录的会话以及当前连接的会话。
本实施例提供的单次登录实现装置,与本发明图1提供的单次登录实现方法相对应,为单次登录实现方法的执行设备,其执行单次登录实现方法的过程可参见本发明图1所示实施例的相关描述,在此不再赘述。
本发明实施例提供的单次登录实现装置,通过判断服务器中是否存在第一属性名对应的第一会话组以及判断第一会话组中是否存在与第一用户名对应的已记录的会话,检测用户的登录情况,并根据判断结果对用户进行处理,实现用户的单次登录。
图6为本发明提供的单次登录实现装置又一个实施例的结构图,如图6所示,在图5所示实施例的基础上,第一处理模块还用于,在不存在与属性名对应的会话组时,对当前用户进行登录成功处理,并建立与属性名对应的会话组。
在图5所示实施例的基础上,还包括:
第一判断子模块56,在第一判断模块53的判断结果为第一会话组中没有存在与第一用户名对应的已记录的会话时,判断当前连接的会话对应的用户名是否为空。
其中,在第一判断子模块56的判断结果为当前连接的会话对应的用户名不为空时,第一处理模块54拒绝当前用户的登录请求,并对当前连接的会话对应的用户名所对应的用户进行登录注销处理;
在第一判断子模块56的判断结果为当前连接的会话对应的用户名为空时,第一处理模块54接受当前用户的登录请求。
第二判断模块57,在第一判断模块53的判断结果为会话组中存在与第一用户名对应的已记录的会话时,判断已记录的会话是否处于有效状态。
第二判断子模块58,在第二判断模块57的判断结果为已记录的会话没有处于有效状态时,判断当前连接的会话对应的用户名是否为空。
其中,在第二判断子模块58的判断结果为当前连接的会话对应的用户名不为空时,第一处理模块54删除已记录的会话,接受当前用户的登录成请求;
在第二判断子模块58的判断结果为当前连接的会话对应的用户名为空时,接受当前用户的登录请求。
第三判断模块59,在第二判断模块57的判断结果为已记录的会话处于有效状态时,用于判断已记录的会话与当前连接的会话是否对应同一个客户机的同一个浏览器。
其中,在第三判断模块59的判断结果为已记录的会话与当前连接的会话对应同一个客户机的同一个浏览器时,第一处理模块54拒绝当前用户的登录请求,并对当前连接的会话对应的用户名所对应的用户进行登录注销处理。
第二处理模块60,在第三判断模块59的判断结果为已记录的会话与当前连接的会话不对应同一个客户机的同一个浏览器时,将已记录的会话置为非有效状态;
第三判断子模块61,用于判断当前连接的会话对应的用户名是否为空;
在第三判断子模块61的判断结果为当前连接的会话对应的用户名不为空时,第一处理模块54拒绝当前用户的登录请求,并对当前连接的会话对应的用户名所对应的用户进行登录注销处理;
在当前连接的会话对应的用户名为空时,接受当前用户的登录请求。
本实施例提供的单次登录实现装置,与本发明图2提供的单次登录实现方法相对应,为单次登录实现方法的执行设备,其执行单次登录实现方法的过程可参见本发明图2所示实施例的相关描述,在此不再赘述。
本发明实施例提供的单次登录实现装置,通过判断服务器中是否存在第一属性名对应的第一会话组、判断第一会话组中是否存在与第一用户名对应的已记录的会话、判断已记录的会话是否处于有效状态、判断已记录的会话与当前连接的会话是否对应同一个客户机的同一个浏览器以及判断当前连接的会话对应的用户名是否为空,确定用户的各种登录情况,并针对用户的登录情况进行处理,实现用户的单次登录。
图7为本发明提供的单次登录实现装置另一个实施例的结构图,如图7所示,在图6所示实施例的基础上,包括:
第二接收模块62,用于接收其他服务器发送的更新请求,更新请求中包含第二用户名和第二应用地址。
确定模块52,还用于根据第二应用地址,确定第二应用对象以及第二属性名;
第四判断模块63,用于判断第二应用对象中是否存在与第二属性名对应的第二会话组。
第三处理模块64,用于根据第四判断模块63的判断结果进行更新,在第二应用对象中不存在与第二属性名对应的第二会话组时,创建与第二属性名对应的第二会话组;
在第二应用对象中存在与第二属性名对应的第二会话组时,获取与第二属性名对应的第二会话组;
在与第二属性名对应的第二会话组中存在与第二用户名对应的会话时,将会话置于非有效状态。
另外,更新的项包括应用对象、会话组和会话,应用对象包括属性名及其对应的会话组,会话组包括用户名及其对应的会话,会话包括用户属性及其对应的用户名,第三处理模块64还用于,将第二用户名记录在用户码字段中;
在第二应用对象中不存在与第二属性名对应的第二会话组时,创建新的会话组,并将新的会话组设置为第二属性名对应的第二会话组;
在第二应用对象中存在与第二属性名对应的第二会话组时,将第二会话组记录在会话组变量中;
在会话组变量中存在与用户码字段中的第二用户名对应的会话时,将该会话置为非有效状态后,删除该会话,得到更新后的会话组变量;
将更新后的会话组变量的内容设置为第二属性名对应的第二会话组。
本实施例提供的单次登录实现装置,与本发明图4提供的单次登录实现方法相对应,为单次登录实现方法的执行设备,其执行单次登录实现方法的过程可参见本发明图4所示实施例的相关描述,在此不再赘述。
本发明实施例提供的单次登录实现装置,通过根据其他服务器发送的更新请求更新本服务器,从而实现应用系统中多服务器之间数据的一致性,在包含多个服务器的应用系统中实现用户的单次登录。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (7)
1.一种单次登录实现方法,其特征在于,包括:
接收当前用户通过浏览器发送的登录请求,所述登录请求中包含第一用户名和第一应用地址;
根据所述第一应用地址,确定第一应用对象以及第一属性名;
在所述第一应用对象中存在与所述第一属性名对应的第一会话组时,进行第一判断,所述第一判断为判断所述第一会话组中是否存在与所述第一用户名对应的已记录的会话,所述第一会话组中包含登录到服务器的所有用户名对应的会话;
根据所述第一判断的判断结果,对已有用户和/或所述当前用户进行处理,使得所述已记录的会话与当前连接的会话中至多有一个处于有效状态,所述当前连接的会话为所述第一会话组中所述当前用户登录的浏览器对应的会话;
更新所述第一应用对象、所述第一会话组、所述已记录的会话以及所述当前连接的会话;
所述根据所述第一判断的判断结果,对已有用户和/或所述当前用户进行处理,包括:
在所述第一判断的判断结果为所述第一会话组中没有存在与所述第一用户名对应的已记录的会话时,判断所述当前连接的会话对应的用户名是否为空;
在所述当前连接的会话对应的用户名不为空时,拒绝所述当前用户的登录请求,并对所述当前连接的会话对应的用户名所对应的用户进行登录注销处理;
在所述当前连接的会话对应的用户名为空时,接受所述当前用户的登录请求;
在所述第一判断的判断结果为所述第一会话组中存在所述已记录的会话时,进行第二判断,所述第二判断为判断所述已记录的会话是否处于有效状态;
根据所述第二判断的判断结果进行处理,使得所述当前连接的会话与所述已记录的会话中至多有一个处于有效状态;
所述根据所述第二判断的判断结果进行处理,包括:
在所述第二判断的判断结果为所述已记录的会话没有处于有效状态时,判断所述当前连接的会话对应的用户名是否为空;
在所述当前连接的会话对应的用户名不为空时,删除所述已记录的会话,接受所述当前用户的登录请求;
在所述当前连接的会话对应的用户名为空时,接受所述当前用户的登录请求;
在所述第二判断的判断结果为所述已记录的会话处于有效状态时,进行第三判断,所述第三判断为判断所述已记录的会话与所述当前连接的会话是否对应同一个客户机的同一个浏览器;
在所述第三判断的判断结果为所述已记录的会话与所述当前连接的会话对应同一个客户机的同一个浏览器时,所述已记录的会话与所述当前连接的会话是同一个会话,拒绝所述当前用户的登录请求,并对所述当前连接的会话对应的用户名所对应的用户进行登录注销处理,所述同一个会话是指所述已记录的会话与所述当前连接的会话对应的用户名相同,且保存在第一会话组中;
在所述第三判断的判断结果为所述已记录的会话与所述当前连接的会话不对应同一个客户机的同一个浏览器时,将所述已记录的会话置为非有效状态;
判断所述当前连接的会话对应的用户名是否为空;
在所述当前连接的会话对应的用户名不为空时,拒绝所述当前用户的登录请求,对所述当前连接的会话对应的用户名所对应的用户进行登录注销处理;
在所述当前连接的会话对应的用户名为空时,接受所述当前用户的登录请求。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述第一应用对象中不存在与所述第一属性名对应的第一会话组时,接受所述当前用户的登录请求,并创建与所述第一属性名对应的所述第一会话组。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
接收其他服务器发送的更新请求,所述更新请求中包含第二用户名和第二应用地址;
根据所述第二应用地址,确定第二应用对象以及第二属性名;
判断所述第二应用对象中是否存在与第二属性名对应的第二会话组;
根据判断结果进行更新。
4.根据权利要求3所述的方法,其特征在于,所述根据判断结果进行更新,包括:
在所述第二应用对象中不存在与所述第二属性名对应的所述第二会话组时,创建与所述第二属性名对应的所述第二会话组;
在所述第二应用对象中存在与所述第二属性名对应的所述第二会话组时,获取所述第二会话组;
在与所述第二属性名对应的所述第二会话组中存在与所述第二用户名对应的会话时,将所述第二用户名对应的会话置于非有效状态。
5.一种单次登录实现装置,其特征在于,包括:
第一接收模块,用于接收当前用户通过浏览器发送的登录请求,所述登录请求中包含第一用户名和第一应用地址;
确定模块,用于根据所述第一应用地址,确定第一应用对象以及第一属性名;
第一判断模块,与所述确定模块和所述第一接收模块相连接,用于在所述第一应用对象中存在与所述第一属性名对应的第一会话组时,进行第一判断,所述第一判断为判断所述第一会话组中是否存在与所述第一用户名对应的已记录的会话,所述第一会话组中包含登录到服务器的所有用户名对应的会话;
第一处理模块,与所述第一判断模块相连接,用于根据所述第一判断模块的判断结果,对已有用户和/或所述当前用户进行处理,使得所述已记录的会话与当前连接的会话中至多有一个处于有效状态,所述当前连接的会话为所述第一会话组中所述当前用户登录的浏览器对应的会话;
更新模块,用于更新所述第一应用对象、所述第一会话组、所述已记录的会话以及所述当前连接的会话;
所述的装置,还包括:
第一判断子模块,在所述第一判断的判断结果为所述第一会话组中没有存在与所述第一用户名对应的已记录的会话时,判断所述当前连接的会话对应的用户名是否为空;
所述第一处理模块还用于,在所述第一判断子模块的判断结果为所述当前连接的会话对应的用户名不为空时,拒绝所述当前用户的登录请求,并对所述当前连接的会话对应的用户名所对应的用户进行登录注销处理;
在所述第一判断子模块的判断结果为所述当前连接的会话对应的用户名为空时,接受所述当前用户的登录请求;
第二判断模块,在所述第一判断模块的判断结果为所述第一判断的判断结果为所述第一会话组中存在所述已记录的会话时,进行第二判断,所述第二判断为判断所述已记录的会话是否处于有效状态;
所述第一处理模块还用于,根据所述第二判断模块的判断结果进行处理,使得所述当前连接的会话与所述已记录的会话中至多有一个处于有效状态;
第二判断子模块,在所述第二判断模块的判断结果为所述已记录的会话没有处于有效状态时,判断所述当前连接的会话对应的用户名是否为空;
所述第一处理模块还用于,在所述第二判断子模块的判断结果为所述当前连接的会话对应的用户名不为空时,删除所述已记录的会话,接受所述当前用户的登录请求;
在所述第二判断子模块的判断结果为所述当前连接的会话对应的用户名为空时,接受所述当前用户的登录请求;
第三判断模块,在所述第二判断模块的判断结果为所述第二判断的判断结果为所述已记录的会话处于有效状态时,进行第三判断,所述第三判断为判断所述已记录的会话与所述当前连接的会话是否对应同一个客户机的同一个浏览器;
所述第一处理模块还用于,在所述第三判断模块的判断结果为所述已记录的会话与所述当前连接的会话对应同一个客户机的同一个浏览器时,所述已记录的会话与所述当前连接的会话是同一个会话,拒绝所述当前用户的登录请求,并对所述当前连接的会话对应的用户名所对应的用户进行登录注销处理,所述同一个会话是指所述已记录的会话与所述当前连接的会话对应的用户名相同,且保存在第一会话组中;
第二处理模块,在所述第三判断模块的判断结果为所述已记录的会话与所述当前连接的会话不对应同一个客户机的同一个浏览器时,将所述已记录的会话置为非有效状态;
第三判断子模块,与所述第二处理模块相连接,用于判断所述当前连接的会话对应的用户名是否为空;
所述第一处理模块还用于,在所述当前连接的会话对应的用户名不为空时,拒绝所述当前用户的登录请求,对所述当前连接的会话对应的用户名所对应的用户进行登录注销处理;
在所述当前连接的会话对应的用户名为空时,接受所述当前用户的登录请求。
6.根据权利要求5所述的装置,其特征在于,所述第一处理模块还用于,在所述第一应用对象中不存在与所述第一属性名对应的第一会话组时,接受所述当前用户的登录请求,并创建与所述第一属性名对应的所述第一会话组。
7.根据权利要求5或6所述的装置,其特征在于,还包括:
第二接收模块,用于接收其他服务器发送的更新请求,所述更新请求中包含第二用户名和第二应用地址;
所述确定模块,还用于根据所述第二应用地址,确定第二应用对象以及第二属性名;
第四判断模块,用于判断所述第二应用对象中是否存在与所述第二属性名对应的第二会话组;
第三处理模块,还用于根据所述第四判断模块的判断结果进行更新,在所述第二应用对象中不存在与所述第二属性名对应的所述第二会话组时,创建与所述第二属性名对应的所述第二会话组;
在所述第二应用对象中存在与所述第二属性名对应的所述第二会话组时,获取所述第二会话组;
在与所述第二属性名对应的所述第二会话组中存在与所述第二用户名对应的会话时,将所述第二用户名对应的会话置于非有效状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310027587.0A CN103118092B (zh) | 2013-01-24 | 2013-01-24 | 单次登录实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310027587.0A CN103118092B (zh) | 2013-01-24 | 2013-01-24 | 单次登录实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103118092A CN103118092A (zh) | 2013-05-22 |
CN103118092B true CN103118092B (zh) | 2015-07-15 |
Family
ID=48416362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310027587.0A Active CN103118092B (zh) | 2013-01-24 | 2013-01-24 | 单次登录实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103118092B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368366B (zh) * | 2016-05-11 | 2021-10-08 | 厦门雅迅网络股份有限公司 | 车辆在线状态失真解决方法及其系统 |
CN106331155B (zh) * | 2016-09-26 | 2019-05-07 | 联动优势电子商务有限公司 | 一种防止用户重复登录的方法和服务器 |
CN107360054A (zh) * | 2017-06-23 | 2017-11-17 | 武汉票据交易中心有限公司 | 一种客户端会话对象的维护方法和系统 |
CN110475088B (zh) * | 2018-05-09 | 2021-06-11 | 视联动力信息技术股份有限公司 | 一种用户登录的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0961202A1 (en) * | 1998-05-29 | 1999-12-01 | Hewlett-Packard Company | Sharing of web session environment information |
CN101237351A (zh) * | 2008-02-27 | 2008-08-06 | 中兴通讯股份有限公司 | 用于登录用户的在线离线状态控制方法 |
CN102082800A (zh) * | 2011-01-28 | 2011-06-01 | 浪潮(北京)电子信息产业有限公司 | 一种用户请求处理的方法和服务器 |
-
2013
- 2013-01-24 CN CN201310027587.0A patent/CN103118092B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0961202A1 (en) * | 1998-05-29 | 1999-12-01 | Hewlett-Packard Company | Sharing of web session environment information |
CN101237351A (zh) * | 2008-02-27 | 2008-08-06 | 中兴通讯股份有限公司 | 用于登录用户的在线离线状态控制方法 |
CN102082800A (zh) * | 2011-01-28 | 2011-06-01 | 浪潮(北京)电子信息产业有限公司 | 一种用户请求处理的方法和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN103118092A (zh) | 2013-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108632213B (zh) | 设备信息处理方法及装置 | |
CN111552633A (zh) | 接口的异常调用测试方法、装置、计算机设备及存储介质 | |
CN103118092B (zh) | 单次登录实现方法和装置 | |
CN105607799B (zh) | 数据处理方法及装置 | |
CN105577735A (zh) | 基于浏览器的用户行为追踪方法及装置 | |
CN105871587A (zh) | 日志上传方法及装置 | |
CN103124275A (zh) | 一种获取文件的方法和装置 | |
CN103391222A (zh) | 网络服务监控系统及方法 | |
CN110650164B (zh) | 文件的上传方法、装置、终端以及计算机存储介质 | |
CN103401883A (zh) | 单点登录方法及系统 | |
CN107644075B (zh) | 收集页面信息的方法和装置 | |
CN106095743B (zh) | 一种富文本编辑方法及装置 | |
CN109981715B (zh) | 一种会话管理的方法及装置 | |
US9178860B2 (en) | Out-of-path, content-addressed writes with untrusted clients | |
CN109446093B (zh) | 一种扩展平台接口测试方法与装置 | |
CN105302925A (zh) | 推送语音搜索数据的方法和装置 | |
CN114465867B (zh) | 服务器的维护方法、装置、存储介质及处理器 | |
CN111935260B (zh) | 账户同步的方法及装置、电子设备、存储介质 | |
CN103326924A (zh) | 浮出消息任务的控制方法、服务器和即时通讯客户端 | |
CN111131409B (zh) | 一种响应请求的方法、装置以及相关设备 | |
CN110807184B (zh) | 一种智能录屏采集电脑及移动终端用户行为数据的方法 | |
CN105827739B (zh) | 联系人信息同步方法、装置、服务器及系统 | |
CN102194062A (zh) | 一种文稿系统中异地登录的控制方法及装置 | |
CN103491113B (zh) | 一种信息聚合文件的同步方法、装置及系统 | |
CN103902663A (zh) | 文件同步方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |