CN112699034A - 虚拟登录用户构建方法、装置、设备及存储介质 - Google Patents
虚拟登录用户构建方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112699034A CN112699034A CN202011612007.0A CN202011612007A CN112699034A CN 112699034 A CN112699034 A CN 112699034A CN 202011612007 A CN202011612007 A CN 202011612007A CN 112699034 A CN112699034 A CN 112699034A
- Authority
- CN
- China
- Prior art keywords
- virtual
- virtual user
- identification information
- preset
- service
- 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.)
- Granted
Links
- 238000010276 construction Methods 0.000 title claims description 18
- 238000012545 processing Methods 0.000 claims abstract description 105
- 238000000034 method Methods 0.000 claims abstract description 75
- 238000011161 development Methods 0.000 claims abstract description 38
- 238000005516 engineering process Methods 0.000 claims description 25
- 238000013507 mapping Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012360 testing method Methods 0.000 abstract description 27
- 230000008569 process Effects 0.000 abstract description 20
- 230000009545 invasion Effects 0.000 abstract description 5
- 238000007711 solidification Methods 0.000 abstract 1
- 230000008023 solidification Effects 0.000 abstract 1
- 230000008901 benefit Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 241000024109 Spiris Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了虚拟登录用户构建方法、装置、设备及存储介质。其中,该方法包括:接收客户端发送的第一业务请求,通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息,通过预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从线程内存空间中获取所述虚拟用户标识信息。本发明实施例提供的技术方案,可有效解决开发环境联调测试时关闭登录鉴权操作导致的用户信息缺失问题,且对业务***的侵入性非常小,不需要对用户信息进行预先的固化编写,可以提高测试过程的灵活性。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及虚拟登录用户构建方法、装置、设备及存储介质。
背景技术
为了便于业务***的管理,通常需要用户采用自己的账号进行登录,方便对各业务操作的执行对象进行记录,此外,为了保证业务***的安全性,通常还采用账户权限管理来控制用户在业务***可执行的业务操作,因此,业务***需要获知用户的用户名或权限等相关用户信息。
在需要登录鉴权的业务***开发过程中,一般会在开发环境进行前后端的联调测试,为了简化前端调用后端接口的鉴权操作,可以关闭登录鉴权操作,但是这会导致接收到客户端业务请求时,后端操作获取用户信息失败,无法正常处理该客户端业务请求。为了解决该问题,现有方案中,会在代码中写入虚拟的用户信息供业务代码直接读取并使用,也即相当于构建一个虚拟的登录用户,然而,这种处理方式需要在代码中的很多地方做出修改,对整个业务***的侵入性较大,且用户信息是固化的,若存在切换其他用户的测试需求时,需要逐一修改存在用户信息的代码,且需要重启服务后才能生效,严重影响测试效率。
发明内容
本发明实施例提供了虚拟登录用户构建方法、装置、设备及存储介质,可以优化现有开发环境中虚拟登录用户的构建方案。
第一方面,本发明实施例提供了一种虚拟登录用户构建方法,应用于业务***中的服务端,该方法包括:
接收客户端发送的第一业务请求;
通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息;
通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述虚拟用户标识信息。
第二方面,本发明实施例提供了一种虚拟登录用户构建装置,配置于业务***中的服务端,该装置包括:
第一业务请求接收模块,用于接收客户端发送的第一业务请求;
虚拟用户标识信息获取模块,用于通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息;
虚拟用户标识信息存入模块,用于通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述虚拟用户标识信息。
第三方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的虚拟登录用户构建方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的虚拟登录用户构建方法。
本发明实施例中提供的虚拟登录用户构建方案,业务***中的服务端在接收到客户端发送的第一业务请求后,通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息,将虚拟用户标识信息存入第一业务请求对应的线程内存空间中,供业务服务在处理第一业务请求时从线程内存空间中获取虚拟用户标识信息。通过采用上述技术方案,以配置文件的形式来存储虚拟用户标识信息,在开发环境中接收到客户端业务请求后,在该请求达到业务服务之前,由预设请求处理组件从配置文件中获取虚拟用户标识信息并添加至该请求对应的线程内存空间中,这样,业务服务在对客户端业务请求进行处理时,可以从对应的线程内存空间中成功获取到虚拟用户标识信息,相当于在业务***中构建了虚拟的登录用户,业务服务可以基于该虚拟的登录用户的虚拟用户标识信息进行相关业务处理,有效解决开发环境联调测试时关闭登录鉴权操作导致的用户信息缺失问题,且虚拟登录用户的构建过程由预设请求处理组件完成,仅需要修改获取用户标识信息的逻辑,对业务***的侵入性非常小,且不需要对用户信息进行预先的固化编写,可以提高测试过程的灵活性。
附图说明
图1为本发明实施例提供的一种虚拟登录用户构建方法的流程示意图;
图2为本发明实施例提供的又一种虚拟登录用户构建方法的流程示意图;
图3为本发明实施例提供的另一种虚拟登录用户构建方法的流程示意图;
图4为本发明实施例提供的一种虚拟登录用户构建装置的结构框图;
图5为本发明实施例提供的一种计算机设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
图1为本发明实施例提供的一种虚拟登录用户构建方法的流程示意图,该方法应用于业务***中的服务端,可以由虚拟登录用户构建装置执行,其中该装置可由软件和/或硬件实现,一般可集成在服务器等计算机设备中。本发明实施例提供的方法可以适用于在业务***的开发环境中进行联调测试时,需要关闭用户登录鉴权操作的情况下,构建虚拟登录用户的应用场景。如图1所示,该方法包括:
步骤101、接收客户端发送的第一业务请求。
本步骤中,第一业务请求可以是任意客户端向业务***中的服务端发送的任意一个业务请求,具体不做限定。第一业务请求的具体形式可以由客户端和服务端之间的通信协议确定,例如,第一业务请求可以是超文本传输协议(HyperText Transfer Protocol,HTTP)请求。
步骤102、通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息。
示例性的,预设请求处理组件可以是基于请求处理对象编写的组件,请求处理对象可以理解为针对进入到***中的客户端业务请求,能够在该客户端业务请求到达业务处理逻辑之前进行处理的对象。例如,预设请求处理组件可以基于服务连接器(servlet)技术中的过滤器(Filter)实现。过滤器是服务连接器技术中常用的请求处理对象,该对象可以对每个进入到***的http请求在到达业务处理逻辑之前进行处理(如增加请求头或修改请求参数等),理论上过滤器可以对http请求进行任何自定义处理。servlet是Java Servlet的简称,可称为小服务程序或服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。当然,预设请求处理组件还可以基于其他类型的请求处理对象实现,可根据实际情况进行选取。
示例性的,预设请求处理组件可以向外提供调用接口,在本步骤中,可以利用该调用接口实现对预设请求处理组件的调用,进而通过预设请求处理组件实现后续相关操作。
服务端中的运行环境可以包括开发环境、生产环境、测试环境以及灰度环境等。在开发环境中,可以进行联调测试,本发明实施例中主要在开发环境中进行联调测试,因此,本发明实施例中的开发环境也可称为联调环境或dev联调环境,dev环境下一般外部用户(也可理解为普通用户)无法访问,是开发人员使用的环境。本发明实施例中,在接收到第一业务请求后,可以先判断当前运行环境是否为开发环境,具体判断方式不做限定,例如可以通过查询运行环境配置信息等方式进行判断。在确定当前运行环境为开发环境时,继续判断是否已经存在模拟登录用户,具体可以是查询***中是否已经存在模拟登录用户的相关用户信息,如用户名等。在确定未检测到虚拟登录用户时,则需要构建模拟登录用户(可称为mock用户)。
示例性的,服务端可以存储有虚拟用户配置文件,该虚拟用户配置文件中可以包括虚拟用户标识信息,如用户名、用户代号或用户id等。虚拟用户配置文件中还可以包括与虚拟用户标识信息相关联的其他信息,如用户权限信息等。需要说明的是,虚拟的含义可以理解为该用户未真正通过输入账号名和密码等登录鉴权方式登录服务端,因此,这里的虚拟用户可以是真实存在的用户,也可以是自定义的用户。
步骤103、通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述虚拟用户标识信息。
对于存在真实用户成功登录的情况,一般可以从客户端业务请求中获取用户名等用户信息,如从请求头中获取。但在删除用户登录鉴权操作后,则处于不存在真实用户成功登录的情况,因此,业务服务(可理解为通过业务逻辑代码实现的服务,这里也可理解为业务代码)在处理客户端业务请求时,无法从客户端业务请求中获取用户信息。本发明实施例中,预设请求处理组件的执行逻辑与业务服务的实现均在一个线程中,也可理解为对第一业务请求进行处理的线程,在第一业务请求到达业务服务之前,通过预设请求处理组件将虚拟用户标识信息存入线程内存空间中,这样,当业务服务处理第一业务请求时,可以直接从线程内存空间中获取虚拟用户标识信息,进而得知虚拟用户的身份,则可以成功对第一业务请求进行处理。
本发明实施例中提供的虚拟登录用户构建方法,业务***中的服务端在接收到客户端发送的第一业务请求后,通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息,将虚拟用户标识信息存入第一业务请求对应的线程内存空间中,供业务服务在处理第一业务请求时从线程内存空间中获取虚拟用户标识信息。通过采用上述技术方案,以配置文件的形式来存储虚拟用户标识信息,在开发环境中接收到客户端业务请求后,在该请求达到业务服务之前,由预设请求处理组件从配置文件中获取虚拟用户标识信息并添加至该请求对应的线程内存空间中,这样,业务服务在对客户端业务请求进行处理时,可以从对应的线程内存空间中成功获取到虚拟用户标识信息,相当于在业务***中构建了虚拟的登录用户,业务服务可以基于该虚拟的登录用户的虚拟用户标识信息进行相关业务处理,有效解决开发环境联调测试时关闭登录鉴权操作导致的用户信息缺失问题,且虚拟登录用户的构建过程由预设请求处理组件完成,仅需要修改获取用户标识信息的逻辑,对业务***的侵入性非常小,且不需要对用户信息进行预先的固化编写,可以提高测试过程的灵活性。
在一些实施例中,通过所述预设请求处理组件从虚拟用户配置文件中读取虚拟用户标识信息,包括:通过所述预设请求处理组件从虚拟用户配置文件中读取虚拟用户标识信息和虚拟用户权限信息。在所述通过所述预设请求处理组件从虚拟用户配置文件中读取虚拟用户标识信息和虚拟用户权限信息之后,还包括:通过所述预设请求处理组件根据所述虚拟用户权限信息构建满足所述业务***的鉴权框架要求的虚拟认证对象;通过所述预设请求处理组件将所述虚拟认证对象存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述虚拟认证对象中包含的虚拟用户权限信息。这样设置的好处在于,不仅能够保证业务服务可以成功获取到用户标识信息,还能够获取到用户权项信息,进而可以对一些需要鉴权的操作进行测试,使得联调测试覆盖的业务服务类型更加广泛全面,提升测试效果,进而保证产品性能。
示例性的,虚拟用户权限信息可以表现为虚拟用户角色,也可以表现为虚拟用户具体拥有的权限项目。在业务***中,同一个用户角色一般拥有多种权限,也即,虚拟用户角色与虚拟用户具体拥有的权限项目可以是一对多的映射关系,业务***中可以维护该一对多的关系(可称为角色权限映射关系),在获知虚拟用户角色的情况下,可以通过查询该角色权限映射关系确定相应的权项项目。
示例性的,在需要进行用户登录鉴权的业务***中,一般都会采用鉴权框架(也可称为安全管理框架或安全框架等)进行权限管理,本发明实施例中对具体的鉴权框架类型不做限定,例如可以是斯普瑞安全(Spring Security)框架、斯普瑞布特(Spring Boot)框架或斯普瑞框架(Spring Framework)等等。当用户登录鉴权成功之后,鉴权框架会生成一个认证对象,该认证对象用来存储当前登录用户的权限信息,当***接收到的客户端业务请求对应于需要进行鉴权的操作时,业务服务一般会通过读取该认证对象来获取当前登录用户的权限信息,进而核实当前登录用户是否具有进行该操作的权限。在联调测试关闭用户登录鉴权操作的情况下,鉴权框架无法生成认证对象,则业务服务也就无法获取权限信息,导致与权限控制相关的业务服务的测试无法进行。本发明实施例中,从虚拟用户配置文件中获取虚拟用户权限信息,并构建满足业务***所采用的鉴权框架要求的虚拟认证对象,存入第一业务请求对应的线程内存空间中,如前文所述,预设请求处理组件的执行逻辑与业务实现均在一个线程中,因此,业务服务可以直接从线程内存空间中获取虚拟认证对象,进而得知虚拟用户权限信息。
在一些实施例中,认证对象中除了用户权限信息以外,还可以包括用户的其他相关信息,如姓名、职业、性别、手机号以及所属部门等等,也可以包括用户标识信息,可以将这些信息统称为用户详情信息。虚拟用户配置文件中可以存储虚拟用户详情信息,可以将虚拟用户详情信息填充到自定义的用户详情对象中,再将用户详情对象封装成符合鉴权框架要求的虚拟认证对象。
在一些实施例中,所述通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,包括:通过所述预设请求处理组件利用线程局部存储(ThreadLocal)技术将所述虚拟用户标识信息注入到第一预设线程上下文变量中。线程局部存储变量是JAVA中的一种线程局部变量,同一个线程中的所有代码片段中均可以通过线程局部存储变量的get(获取)方法获取到该线程局部变量的值。这样设置的好处在于,利用线程局部存储技术可以便捷地实现虚拟用户标识信息的存入和获取。示例性的,第一预设线程上下文变量可以自定义名称,由于用于存储用户标识信息,可以命名为如UserName。示例性的,可以利用线程局部存储技术中的set(设置)方法将虚拟用户标识信息注入到第一业务请求对应的第一预设线程上下文变量中。
在一些实施例中,所述通过所述预设请求处理组件将所述虚拟认证对象存入线程内存空间中,包括:通过所述预设请求处理组件利用线程局部存储技术将所述虚拟认证对象注入到第二预设线程上下文变量中,所述第二预设线程上下文变量与所述鉴权框架对应。同理,利用线程局部存储技术可以便捷地实现虚拟认证对象的存入和获取。其中,第二预设线程上下文变量与所述鉴权框架对应,可理解为第二预设线程上下文变量可以是鉴权框架中本来用于存储认证对象的线程上下文变量。
在一些实施例中,所述未检测到虚拟登录用户,包括:检测到所述第一预设线程上下文变量或第二预设线程上下文变量的取值为空。这样设置的好处在于,可以快速准确地确定是否存在虚拟登录用户。
在一些实施例中,在所述通过所述预设请求处理组件将所述虚拟认证对象存入线程内存空间中之后,还包括:通过业务服务利用所述线程局部存储技术中与所述第一预设线程上下文变量对应的获取方法获取对应的虚拟用户标识信息,基于所获取的虚拟用户标识信息处理所述第一业务请求。示例性的,这种情况可以适用于不需要进行权限管控的操作,例如,业务***中任何用户均可以访问公共文档,第一业务请求可以是公共文档访问请求,此时,对应的业务服务在处理第一业务请求时,可以获取虚拟用户标识信息,记录发起第一业务请求的用户为该虚拟用户,并执行返回公共文档内容等相关操作。
在一些实施例中,在所述通过所述预设请求处理组件将所述虚拟认证对象存入线程内存空间中之后,还包括:通过业务服务利用所述线程局部存储技术中与所述第一预设线程上下文变量对应的获取方法获取对应的虚拟用户标识信息,利用所述线程局部存储技术中与所述第二预设线程上下文变量对应的获取方法获取对应的虚拟用户权限信息,并基于所获取的虚拟用户标识信息和虚拟用户权限信息处理所述第一业务请求。示例性的,这种情况可以适用于需要进行权限管控的操作,例如,对于某个机密文档,业务***中只有具备指定权限的用户才可以访问,第一业务请求可以是该机密文档访问请求,此时,对应的业务服务在处理第一业务请求时,可以获取虚拟用户标识信息和虚拟用户权限信息,判断该虚拟用户是否具备相应的权限,若不具备,则拒绝返回机密文档内容,若具备,则可执行返回机密文档内容等相关操作,此外,也可记录发起第一业务请求的用户为该虚拟用户。
在一些实施例中,在所述接收客户端发送的第一业务请求之后,还包括:通过所述预设请求处理组件检测到当前运行环境不是开发环境时,获取所述第一业务请求对应的真实用户标识信息;通过所述预设请求处理组件将所述真实用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述真实用户标识信息。这样设置的好处在于,通过修改正常登录的真实用户的真实用户标识信息的获取逻辑,可以使得业务服务不需要针对不同的运行环境进行有针对性的处理,而是统一到线程内存空间中进行获取,使得业务服务侧实现无感知的请求处理,也使得测试过程更接近真实使用过程,提高测试准确性。
示例性的,通过所述预设请求处理组件将所述真实用户标识信息存入线程内存空间中可具体包括:通过所述预设请求处理组件利用线程局部存储技术将所述真实用户标识信息存入第一预设线程上下文变量中。相应的,可以通过业务服务利用所述线程局部存储技术中与所述第一预设线程上下文变量对应的获取方法获取对应的真实用户标识信息,并基于所获取的真实用户标识信息处理所述第一业务请求。
图2为本发明实施例提供的又一种虚拟登录用户构建方法的流程示意图,如图2所示,该方法可包括:
步骤201、接收客户端发送的第一业务请求。
步骤202、通过预设请求处理组件检测当前运行环境是否为开发环境,若是,则执行步骤203;否则,执行步骤208。
示例性的,预设请求处理组件基于服务连接器技术中的过滤器实现,可以以Jar包形式存在。
步骤203、判断第一预设线程上下文变量是否为空,若是,则执行步骤204;否则,执行步骤209。
示例性的,若不为空,则说明在接收到历史客户端业务请求时,虚拟登录用户已经构建完毕,则可直接跳转到步骤209中,由业务服务对第一业务请求进行处理。需要说明的是,对于同一登录用户而言,其向客户端发送的多个请求在服务端均由同一线程进行处理,因此,后续客户端业务请求对应的业务代码片段均可从该线程对应的线程内存空间中获取相关信息,也就是说虚拟登录用户构建完毕后,服务端再接收到客户端发送的请求时,均可以获取到虚拟登录用户的用户名等信息。
步骤204、通过预设请求处理组件从虚拟用户配置文件中读取虚拟用户标识信息和虚拟用户权限信息。
步骤205、通过预设请求处理组件利用线程局部存储技术将虚拟用户标识信息注入到第一预设线程上下文变量中。
步骤206、通过预设请求处理组件根据虚拟用户权限信息构建满足业务***的鉴权框架要求的虚拟认证对象。
步骤207、通过预设请求处理组件利用线程局部存储技术将虚拟认证对象注入到第二预设线程上下文变量中,执行步骤209。
其中,所述第二预设线程上下文变量为鉴权框架中规定的用于存储真实登录用户的认证对象的线程上下文变量。
步骤208、通过预设请求处理组件将真实用户标识信息注入第一预设线程上下文变量中。
示例性的,本步骤中,也可先判断第一预设线程上下文变量是否为空,若为空,则将真实用户标识信息存入第一业务请求对应的第一预设线程上下文变量中;若不为空,则说明接收到历史客户端业务请求时,已经将真实用户标识信息注入到第一预设线程上下文变量中,则可继续执行后续步骤。
步骤209、通过业务服务利用线程局部存储技术中与第一预设线程上下文变量对应的获取方法获取对应的用户标识信息,利用线程局部存储技术中与第二预设线程上下文变量对应的获取方法获取对应的用户权限信息,并基于所获取的用户标识信息和用户权限信息处理第一业务请求。
需要说明的是,对于开发环境以外的运行环境,如生产环境,可以有真实用户登录成功时,认证对象由鉴权框架自动生成并注入第二预设线程上下文变量。业务服务在读取到第一预设线程上下文变量的值和第二预设线程上下文变量的值后,并不会区分是虚拟用户还是真实用户,采用的业务处理逻辑可以是相同的。
本发明实施例提供的虚拟登录用户构建方法,基于线程局部存储技术和过滤器技术为开发者在所有操作环境中自动注入用户指定的用户信息,解决开发环境联调测试时免登录情况下用户信息缺失的问题,且获取用户信息的大部分逻辑均在基于过滤器编写的组件中实现,理论上仅需引入一个Jar包,并少量改动代码(如业务服务获取用户信息时的获取位置等相关代码)便可以实现任意用户信息注入功能,对原有***侵入性很小。
在一些实施例中,还可包括:接收客户端发送的虚拟用户切换请求;通过所述预设请求处理组件检测到当前运行环境为开发环境时,根据所述虚拟用户切换请求中包含的目标虚拟用户标识信息更新所述虚拟用户配置文件。这样设置的好处在于,开发人员或测试人员可以利用客户端发送虚拟用户切换请求实现虚拟用户配置文件的更新,进而可以实现虚拟登录用户的切换,便于模拟测试不同角色用户在使用某个功能时是否有异常。
在一些实施例中,所述根据所述虚拟用户切换请求中包含的目标虚拟用户标识信息更新所述虚拟用户配置文件,包括:根据所述虚拟用户切换请求中包含的目标虚拟用户标识信息从预设映射关系表中查询对应的目标虚拟用户权限信息,其中,所述预设映射关系表中包含用户标识信息与用户权限信息的映射关系;根据所述目标虚拟用户标识信息和所述目标虚拟用户权限信息更新所述虚拟用户配置文件。这样设置的好处在于,可以预先配置预设映射关系表,减少虚拟用户切换请求中包含的数据量,避免在发送请求过程中产生信息丢失,提升切换效率以及成功率。
在一些实施例中,在所述根据所述虚拟用户设置请求中包含的目标虚拟用户标识信息更新所述虚拟用户配置文件之后,还包括:通过所述预设请求处理组件重新执行读取虚拟用户配置文件的相关操作。这样设置的好处在于,在虚拟用户配置文件被更新后,可以自动进行虚拟登录用户的重新构建,且在切换过程中,业务***中的服务无需重启,可进一步提升测试效率。其中,通过所述预设请求处理组件重新执行读取虚拟用户配置文件的相关操作,可具体包括:通过所述预设请求处理组件从虚拟用户配置文件(更新后的虚拟用户配置文件)中读取虚拟用户标识信息,通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中。还可包括上文所述的相关操作,此处不再赘述。
图3为本发明实施例提供的另一种虚拟登录用户构建方法的流程示意图,如图3所示,该方法可包括:
步骤301、接收客户端业务请求。
步骤302、通过预设过滤器组件检测到当前运行环境为开发环境,判断第一预设线程上下文变量是否为空,若是,则执行步骤303;否则执行步骤307。
步骤303、通过预设过滤器组件从虚拟用户配置文件中读取虚拟用户名和虚拟用户详情信息。
其中,虚拟用户详情信息可包括虚拟用户权限以及虚拟用户姓名等其他相关信息。
步骤304、通过预设过滤器组件利用线程局部存储技术将虚拟用户名注入到第一线程上下文变量中。
其中,第一线程上下文变量可记为Username。
步骤305、通过预设过滤器组件根据虚拟用户详情信息构建满足斯普瑞安全框架要求的虚拟认证对象。
示例性的,预设过滤器组件中可预先设置自定义对象,如命名为UserDetail对象,将虚拟用户详情信息填充到UserDetail对象中,再将UserDetail对象封装成虚拟认证对象,如命名为mock authentication对象。
步骤306、通过预设过滤器组件利用线程局部存储技术将虚拟认证对象注入到第二线程上下文变量中。
其中,第二线程上下文变量可记为spring security。
步骤307、通过业务服务利用线程局部存储技术中与第一线程上下文变量对应的获取方法获取虚拟用户名,以及利用与第二线程上下文变量对应的获取方法获取所需的虚拟用户详情信息,并基于获取到的虚拟用户名和虚拟用户详情信息处理接收到的客户端业务请求。
需要说明的是,在进行虚拟登录用户切换后,再接收到客户端业务请求时,本步骤所获取到的虚拟用户名和虚拟用户详情信息为切换后的虚拟登录用户对应的用户信息。
步骤308、判断是否接收到客户端发送的虚拟用户切换请求,若是,则执行步骤309;否则,返回执行步骤301。
示例性的,可以在预设过滤器组件中封装用户切换用户的接口,例如可以是Rest接口,虚拟用户切换请求可以是Rest请求。客户端在发送虚拟用户切换请求时,可以传入目标虚拟用户名参数值。
步骤309、检测到当前运行环境为开发环境时,根据目标虚拟用户名从预设映射关系表中查询对应的目标虚拟用户详情信息,根据目标虚拟用户名和目标虚拟用户详情信息更新虚拟用户配置文件。
示例性的,在本步骤之后,可立即执行步骤310,这样可以及时对第一线程上下文变量和第二线程上下文变量进行更新,后续接收到客户端业务请求时,则可快速基于新的虚拟登录用户信息进行处理,提高测试效率。
可选的,在本步骤之后,也可不立即执行步骤310,可以清空第一线程上下文变量和第二线程上下文变量,等待接收到新的客户端请求之后,再进行后续步骤。例如,执行步骤309之后,可以清空第一线程上下文变量和第二线程上下文变量,然后返回执行步骤301,这时,虚拟用户配置文件已更新,且第一线程上下文变量已清空,则会继续执行步骤303,此时,将会从新的虚拟用户配置文件中读取虚拟用户名和虚拟用户详情信息。
步骤310、通过预设过滤器组件从新的虚拟用户配置文件中读取虚拟用户名和虚拟用户详情信息。
步骤311、通过预设过滤器组件将新读取的虚拟用户名注入到第一线程上下文变量中。
步骤312、通过预设过滤器组件根据新读取的虚拟用户详情信息构建满足斯普瑞安全框架要求的虚拟认证对象。
步骤313、通过预设过滤器组件利用线程局部存储技术将新的虚拟认证对象注入到第二线程上下文变量中,返回执行步骤301。
本发明实施例通过采用上述技术方案,提供了一种侵入性极低的方法用于在免登录的情况下注入mock用户(虚拟登录用户),该用户的所有权限信息都可以是真实完整的,因此可以用于模拟不同角色的用户登录进行测试,同时还可以实现无需重启服务就能做到无缝切换登录用户,极大的提高了开发和测试效率。
图4为本发明实施例提供的一种虚拟登录用户构建装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在计算机设备中,可通过执行虚拟登录用户构建方法来构建虚拟登录用户。如图4所示,该装置包括:
第一业务请求接收模块401,用于接收客户端发送的第一业务请求;
虚拟用户标识信息获取模块402,用于通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息;
虚拟用户标识信息存入模块403,用于通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述虚拟用户标识信息。
本发明实施例中提供的虚拟登录用户构建装置,业务***中的服务端在接收到客户端发送的第一业务请求后,通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息,将虚拟用户标识信息存入第一业务请求对应的线程内存空间中,供业务服务在处理第一业务请求时从线程内存空间中获取虚拟用户标识信息。通过采用上述技术方案,以配置文件的形式来存储虚拟用户标识信息,在开发环境中接收到客户端业务请求后,在该请求达到业务服务之前,由预设请求处理组件从配置文件中获取虚拟用户标识信息并添加至该请求对应的线程内存空间中,这样,业务服务在对客户端业务请求进行处理时,可以从对应的线程内存空间中成功获取到虚拟用户标识信息,相当于在业务***中构建了虚拟的登录用户,业务服务可以基于该虚拟的登录用户的虚拟用户标识信息进行相关业务处理,有效解决开发环境联调测试时关闭登录鉴权操作导致的用户信息缺失问题,且虚拟登录用户的构建过程由预设请求处理组件完成,仅需要修改获取用户标识信息的逻辑,对业务***的侵入性非常小,且不需要对用户信息进行预先的固化编写,可以提高测试过程的灵活性。
本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的虚拟登录用户构建装置。图5为本发明实施例提供的一种计算机设备的结构框图。计算机设备500包括存储器501、处理器502及存储在存储器501上并可在处理器502上运行的计算机程序,所述处理器502执行所述计算机程序时实现本发明实施例提供的虚拟登录用户构建方法。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的虚拟登录用户构建方法。
上述实施例中提供的虚拟登录用户构建装置、设备以及存储介质可执行本发明任意实施例所提供的虚拟登录用户构建方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的虚拟登录用户构建方法。
注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。
Claims (10)
1.一种虚拟登录用户构建方法,其特征在于,应用于业务***中的服务端,所述方法包括:
接收客户端发送的第一业务请求;
通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息;
通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述虚拟用户标识信息。
2.根据权利要求1所述的方法,其特征在于,通过所述预设请求处理组件从虚拟用户配置文件中读取虚拟用户标识信息,包括:
通过所述预设请求处理组件从虚拟用户配置文件中读取虚拟用户标识信息和虚拟用户权限信息;
在所述通过所述预设请求处理组件从虚拟用户配置文件中读取虚拟用户标识信息和虚拟用户权限信息之后,还包括:
通过所述预设请求处理组件根据所述虚拟用户权限信息构建满足所述业务***的鉴权框架要求的虚拟认证对象;
通过所述预设请求处理组件将所述虚拟认证对象存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述虚拟认证对象中包含的虚拟用户权限信息。
3.根据权利要求2所述的方法,其特征在于,所述通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,包括:
通过所述预设请求处理组件利用线程局部存储技术将所述虚拟用户标识信息注入到第一预设线程上下文变量中;
相应的,所述通过所述预设请求处理组件将所述虚拟认证对象存入线程内存空间中,包括:
通过所述预设请求处理组件利用线程局部存储技术将所述虚拟认证对象注入到第二预设线程上下文变量中,其中,所述第二预设线程上下文变量与所述鉴权框架对应。
4.根据权利要求3所述的方法,其特征在于,在所述通过所述预设请求处理组件将所述虚拟认证对象存入线程内存空间中之后,还包括:
通过业务服务利用所述线程局部存储技术中与所述第一预设线程上下文变量对应的获取方法获取对应的虚拟用户标识信息,利用所述线程局部存储技术中与所述第二预设线程上下文变量对应的获取方法获取对应的虚拟用户权限信息,并基于所获取的虚拟用户标识信息和虚拟用户权限信息处理所述第一业务请求。
5.根据权利要求1所述的方法,其特征在于,在所述接收客户端发送的第一业务请求之后,还包括:
通过所述预设请求处理组件检测到当前运行环境不是开发环境时,获取所述第一业务请求对应的真实用户标识信息;
通过所述预设请求处理组件将所述真实用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述真实用户标识信息。
6.根据权利要求1所述的方法,其特征在于,还包括:
接收客户端发送的虚拟用户切换请求;
通过所述预设请求处理组件检测到当前运行环境为开发环境时,根据所述虚拟用户切换请求中包含的目标虚拟用户标识信息更新所述虚拟用户配置文件。
7.根据权利要求6所述的方法,其特征在于,所述根据所述虚拟用户切换请求中包含的目标虚拟用户标识信息更新所述虚拟用户配置文件,包括:
根据所述虚拟用户切换请求中包含的目标虚拟用户标识信息从预设映射关系表中查询对应的目标虚拟用户权限信息,其中,所述预设映射关系表中包含用户标识信息与用户权限信息的映射关系;
根据所述目标虚拟用户标识信息和所述目标虚拟用户权限信息更新所述虚拟用户配置文件。
8.一种虚拟登录用户构建装置,其特征在于,配置于业务***中的服务端,所述装置包括:
第一业务请求接收模块,用于接收客户端发送的第一业务请求;
虚拟用户标识信息获取模块,用于通过预设请求处理组件检测到当前运行环境为开发环境,且未检测到虚拟登录用户时,从虚拟用户配置文件中读取虚拟用户标识信息;
虚拟用户标识信息存入模块,用于通过所述预设请求处理组件将所述虚拟用户标识信息存入线程内存空间中,供业务服务在处理所述第一业务请求时从所述线程内存空间中获取所述虚拟用户标识信息。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011612007.0A CN112699034B (zh) | 2020-12-30 | 2020-12-30 | 虚拟登录用户构建方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011612007.0A CN112699034B (zh) | 2020-12-30 | 2020-12-30 | 虚拟登录用户构建方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112699034A true CN112699034A (zh) | 2021-04-23 |
CN112699034B CN112699034B (zh) | 2024-05-28 |
Family
ID=75511531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011612007.0A Active CN112699034B (zh) | 2020-12-30 | 2020-12-30 | 虚拟登录用户构建方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699034B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535744A (zh) * | 2021-07-09 | 2021-10-22 | 深圳市蘑菇财富技术有限公司 | 租户数据修改方法、***、设备及存储介质 |
CN113938886A (zh) * | 2021-11-30 | 2022-01-14 | 上海派拉软件股份有限公司 | 身份认证平台测试方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030014466A1 (en) * | 2001-06-29 | 2003-01-16 | Joubert Berger | System and method for management of compartments in a trusted operating system |
CN101388797A (zh) * | 2008-11-05 | 2009-03-18 | 杭州华三通信技术有限公司 | 一种在网管***中实现权限控制的方法和一种网管*** |
US20090089407A1 (en) * | 2007-10-02 | 2009-04-02 | Aspect Software Inc. | Deployment Wizard |
CN108683559A (zh) * | 2018-05-11 | 2018-10-19 | 中国电子技术标准化研究院 | 一种云计算平台测试方法 |
CN109657434A (zh) * | 2018-12-18 | 2019-04-19 | 浙江口碑网络技术有限公司 | 应用访问方法及装置 |
CN110162994A (zh) * | 2019-04-16 | 2019-08-23 | 深圳壹账通智能科技有限公司 | 权限控制方法、***、电子设备及计算机可读存储介质 |
CN110221945A (zh) * | 2019-06-12 | 2019-09-10 | 深圳市网心科技有限公司 | 基于安全鉴权的自动化测试方法、装置、终端及存储介质 |
CN110262964A (zh) * | 2019-05-21 | 2019-09-20 | 深圳壹账通智能科技有限公司 | 测试方法、装置、设备及计算机可读存储介质 |
-
2020
- 2020-12-30 CN CN202011612007.0A patent/CN112699034B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030014466A1 (en) * | 2001-06-29 | 2003-01-16 | Joubert Berger | System and method for management of compartments in a trusted operating system |
US20090089407A1 (en) * | 2007-10-02 | 2009-04-02 | Aspect Software Inc. | Deployment Wizard |
CN101388797A (zh) * | 2008-11-05 | 2009-03-18 | 杭州华三通信技术有限公司 | 一种在网管***中实现权限控制的方法和一种网管*** |
CN108683559A (zh) * | 2018-05-11 | 2018-10-19 | 中国电子技术标准化研究院 | 一种云计算平台测试方法 |
CN109657434A (zh) * | 2018-12-18 | 2019-04-19 | 浙江口碑网络技术有限公司 | 应用访问方法及装置 |
CN110162994A (zh) * | 2019-04-16 | 2019-08-23 | 深圳壹账通智能科技有限公司 | 权限控制方法、***、电子设备及计算机可读存储介质 |
CN110262964A (zh) * | 2019-05-21 | 2019-09-20 | 深圳壹账通智能科技有限公司 | 测试方法、装置、设备及计算机可读存储介质 |
CN110221945A (zh) * | 2019-06-12 | 2019-09-10 | 深圳市网心科技有限公司 | 基于安全鉴权的自动化测试方法、装置、终端及存储介质 |
Non-Patent Citations (2)
Title |
---|
ALEXANDER STANIK等: "Local authentication and authorization system for immediate setup of cloud environments", 《2013 INTERNATIONAL CONFERENCE ON ADVANCES IN COMPUTING, COMMUNICATIONS AND INFORMATICS (ICACCI)》, 21 October 2013 (2013-10-21), pages 1651 - 1656 * |
徐乐: "基于企业服务总线的服务资源共享平台", 《数字技术与应用》, 25 March 2019 (2019-03-25), pages 64 - 66 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535744A (zh) * | 2021-07-09 | 2021-10-22 | 深圳市蘑菇财富技术有限公司 | 租户数据修改方法、***、设备及存储介质 |
CN113535744B (zh) * | 2021-07-09 | 2023-12-08 | 深圳市蘑菇财富技术有限公司 | 租户数据修改方法、***、设备及存储介质 |
CN113938886A (zh) * | 2021-11-30 | 2022-01-14 | 上海派拉软件股份有限公司 | 身份认证平台测试方法、装置、设备及存储介质 |
CN113938886B (zh) * | 2021-11-30 | 2024-04-05 | 上海派拉软件股份有限公司 | 身份认证平台测试方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112699034B (zh) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766262B (zh) | 接口数据处理方法、自动化测试方法、装置、设备和介质 | |
CN107133180B (zh) | 动态页面的测试方法、测试装置及存储介质 | |
CN109669859B (zh) | 服务测试方法、装置、计算机设备和存储介质 | |
CN108228444B (zh) | 一种测试方法和装置 | |
CN111625301A (zh) | 幂等处理方法、装置、设备及存储介质 | |
CN109558320A (zh) | ***测试方法、装置、***、设备及计算机可读存储介质 | |
CN109683997B (zh) | 通过沙箱访问应用程序接口的方法、沙箱及沙箱设备 | |
CN110928770B (zh) | 软件测试的方法、装置、***、存储介质和电子设备 | |
CN112699034B (zh) | 虚拟登录用户构建方法、装置、设备及存储介质 | |
CN110795174A (zh) | 一种应用程序接口调用方法、装置、设备及可读存储介质 | |
CN114189553B (zh) | 一种流量回放方法、***及计算设备 | |
CN112650689A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN113821254A (zh) | 接口数据处理方法、装置、存储介质及设备 | |
CN111159033B (zh) | 一种软件测试方法及装置 | |
CN112035163A (zh) | 软件开发包配置方法、设备和存储介质 | |
CN111695098A (zh) | 多分布式集群访问方法及装置 | |
CN108647139B (zh) | ***的测试方法、装置、存储介质及电子装置 | |
CN105681291A (zh) | 一种实现多客户端统一认证方法及*** | |
CN115391188A (zh) | 一种场景测试用例生成方法、装置、设备及存储介质 | |
CN109831496B (zh) | 一种终端数据的调试方法 | |
CN111475763B (zh) | 网页运行方法、装置、存储介质及设备 | |
CN114385503A (zh) | 接口测试方法、装置、设备及存储介质 | |
CN112464225A (zh) | 一种请求处理方法、请求处理装置及计算机可读存储介质 | |
CN111078571A (zh) | 模拟响应的测试方法、终端设备及计算机可读存储介质 | |
CN111064675A (zh) | 访问流量控制方法、装置、网络设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |