一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种应用数据的隔离方法及系统与流程

2022-11-30 14:51:47 来源:中国专利 TAG:


1.本发明涉及数据隔离领域,尤其涉及一种应用数据的隔离方法及系统。


背景技术:

2.配置用户在低代码平台创建应用,每个应用定义自已的一套数据表,系统生成物理表时默认给整套表都加上应用编码前缀,最终用户访问应用,应用的url是站点根地址 租户编码 应用编码,进到应用后,所有功能菜单的访问url后缀都是对应功能的编码。从而在低代码平台中创建的多应用,当多个应用在同一个服务容器内,并发时不同租户不同应用容易互相干扰,出现多应用之间交互情况,应用间相互干扰,数据表混乱,导致访问应用数据出错,因此需要充分考虑应用数据的隔离问题。
3.现有技术常使用表字段进行数据隔离,即每个表有租户编码和应用编码字段,不同租户的数据放同一张表,查询时把租户编码和应用编码作为条件,每个登陆用户的租户编码和应用编码存于会话中,请求处理过程需要将租户编码和应用编码一层一层传递。但使用此方法进行应用数据隔离时,采用租户编码、应用编码,获取太过麻烦,由于租户编码和应用编码没有隔离,在并发时不同租户不同应用容易互相干扰,数据未能真正隔离。


技术实现要素:

4.本发明提供了一种应用数据的隔离方法及系统,实现一个服务容器中可同时运行多个应用,保证并发时线程的安全性,不同应用数据互相不干扰。
5.为了解决上述技术问题,本发明实施例提供了一种应用数据的隔离方法,包括:
6.接收服务请求,并提取服务请求中的编码,将服务请求封装为内部请求,根据服务容器的应用,对内部请求进行鉴权过滤,获得有权请求,根据有权请求,访问应用;
7.根据编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中,根据上下文和拦截器,将第一操作数据库的第一数据表名添加编码的前缀,获得第二操作数据库,根据有权请求和上下文,操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据。
8.实施本发明实施例,在接收服务请求后,获取服务请求的编码,同时将服务请求封装为内部请求,根据内部请求,进行鉴权过滤,获得有权请求;根据编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中,使用本地线程存储上下文数据,进行线程隔离,避免并发时线程安全问题,保证并发时线程的安全性,同时也实现了应用的隔离。再根据上下文和拦截器,将操作数据库的原始数据表名添加编码的前缀,获得更名后的操作数据库,根据有权请求和更名后的操作数据库,处理业务,隔离其他应用数据。对数据表名添加服务请求中的编码前缀,不同应用的请求处理的是有各自前缀的数据表,隔离其他应用数据,实现一个服务容器中可同时运行多个应用,不同应用数据互相不干扰。
9.作为优选方案,接收服务请求,并提取服务请求中的编码,将服务请求封装为内部请求,根据服务容器的应用,对内部请求进行鉴权过滤,获得有权请求,根据有权请求,访问
应用,具体为:
10.接收服务请求,根据服务请求,获取租户编码和应用编码,并将服务请求封装为内部请求;
11.根据内部请求的授权信息,判断租户编码和应用编码是否在授权列表,若是,则将内部请求标记为鉴权通过,获得有权请求,若否,则返回非法访问提示;
12.根据有权请求,访问应用。
13.实施本发明实施例,通过鉴权过滤,过滤出无权限访问的请求,并返回非法访问提示,对无权限访问的请求不做任何处理,避免无权限访问的请求进入非自身应用。
14.作为优选方案,根据编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中,根据上下文和拦截器,将第一操作数据库的第一数据表名添加编码的前缀,获得第二操作数据库,根据有权请求和上下文,操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据,具体为:
15.根据租户编码和应用编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中;
16.将上下文赋给元数据引擎,根据上下文、元数据引擎和持久层框架的拦截器,将第一操作数据库的第一数据表名中添加租户编码和应用编码的编码前缀,获得第二操作数据库;
17.持久层框架使用第二操作数据库去查询或者更新数据,在业务处理的过程中从本地线程中获取最新上下文,根据有权请求和最新上下文,在应用中进行业务处理,并操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据。
18.实施本发明实施例,业务处理逻辑过程中都从本地线程获取上下文,保证处理的数据都是当前应用的数据,并隔离其他应用数据,上下文中设置好租户编码和应用编码,每个请求中的数据查询、数据更新、缓存获取和更新,都先从上下文获取租户编码和应用编码,再去处理数据,从而实现了租户隔离、应用隔离。
19.作为优选方案,将上下文赋给元数据引擎,根据上下文、元数据引擎和持久层框架的拦截器,将第一操作数据库的第一数据表名中添加租户编码和应用编码的编码前缀,获得第二操作数据库,具体为:
20.将上下文赋给元数据引擎,元数据引擎在拦截器中获取到要数据操作的数据库,获得第一操作数据库;
21.根据分析第一操作数据库,获取第一数据表名,将第一数据表名中添加租户编码和应用编码的编码前缀,获得第二数据表名;
22.将第二数据表名替换在第一操作数据库中的第一数据表名,获得第二操作数据库。
23.为了解决相同的技术问题,本发明实施例还提供了一种应用数据的隔离系统,包括:封装鉴权模块和请求处理模块;
24.其中,封装鉴权模块用于接收服务请求,并提取服务请求中的编码,将服务请求封装为内部请求,根据服务容器的应用,对内部请求进行鉴权过滤,获得有权请求,根据有权请求,访问应用;
25.请求处理模块用于根据编码,初始化应用的上下文,并将上下文的数据临时存储
在本地线程中,根据上下文和拦截器,将第一操作数据库的第一数据表名添加编码的前缀,获得第二操作数据库,根据有权请求和上下文,操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据。
26.作为优选方案,封装鉴权模块包括封装单元、鉴权单元和访问应用单元;
27.其中,封装单元用于接收服务请求,根据服务请求,获取租户编码和应用编码,并将服务请求封装为内部请求;
28.鉴权单元用于根据内部请求的授权信息,判断租户编码和应用编码是否在授权列表,若是,则将内部请求标记为鉴权通过,获得有权请求,若否,则返回非法访问提示;
29.访问应用单元用于根据有权请求,访问应用。
30.作为优选方案,请求处理模块包括本地线程单元、添加前缀单元和处理业务单元;
31.其中,本地线程单元用于根据租户编码和应用编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中;
32.添加前缀单元用于将上下文赋给元数据引擎,根据上下文、元数据引擎和持久层框架的拦截器,将第一操作数据库的第一数据表名中添加租户编码和应用编码的编码前缀,获得第二操作数据库;
33.处理业务单元用于持久层框架使用第二操作数据库去查询或者更新数据,在业务处理的过程中从本地线程中获取最新上下文,根据有权请求和最新上下文,在应用中进行业务处理,并操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据。
34.作为优选方案,添加前缀单元包括获取子单元、添加子单元和替换子单元;
35.其中,获取子单元用于将上下文赋给元数据引擎,元数据引擎在拦截器中获取到要数据操作的数据库,获得第一操作数据库;
36.添加子单元用于根据分析第一操作数据库,获取第一数据表名,将第一数据表名中添加租户编码和应用编码的编码前缀,获得第二数据表名;
37.替换子单元用于将第二数据表名替换在第一操作数据库中的第一数据表名,获得第二操作数据库。
38.为了解决相同的技术问题,本发明实施例还提供一种计算机设备,包括处理器和存储器,存储器用于存储计算机程序,计算机程序被处理器执行时实现应用数据的隔离方法。
39.为了解决相同的技术问题,本发明实施例还提供一种计算机可读存储介质,其存储有计算机程序,计算机程序被处理器执行时实现应用数据的隔离方法。
附图说明
40.图1:为本发明提供的应用数据的隔离方法的一种实施例的流程示意图;
41.图2:为本发明提供的应用数据的隔离方法的一种实施例的应用数据隔离的实现过程示意图;
42.图3:为本发明提供的应用数据的隔离方法的一种实施例的用户用例示意图图;
43.图4:为本发明提供的应用数据的隔离方法的一种实施例的鉴权过滤器图;
44.图5:为本发明提供的应用数据的隔离方法的一种实施例的请求查询销售员信息
转换过程图;
45.图6:为本发明提供的应用数据的隔离方法的一种实施例的应用数据隔离图;
46.图7:为本发明提供的应用数据的隔离系统的另一种实施例的结构示意图。
具体实施方式
47.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
48.实施例一
49.请参照图1,为本发明实施例提供的一种应用数据的隔离方法的流程示意图。本实施例的应用数据的隔离方法适用于应用管理的低代码平台生成的应用,应用间容易相互干扰,需要充分考虑应用数据的隔离,本实施例通过服务请求中的编码、对数据表加编码前缀和本地线程进行线程隔离,在服务容器内,保证并发时线程的安全性,不同应用数据互相不干扰。服务容器内的应用数据隔离的实现过程,如图2所示的,从获取外部请求,到根据请求和上下文处理业务逻辑,实现应用数据的隔离,该应用数据的隔离方法包括步骤101至步骤102,各步骤具体如下:
50.步骤101:接收服务请求,并提取服务请求中的编码,将服务请求封装为内部请求,根据服务容器的应用,对内部请求进行鉴权过滤,获得有权请求,根据有权请求,访问应用。
51.可选的,步骤101具体包括步骤1011至步骤1013,各步骤具体如下:
52.步骤1011:接收服务请求,根据服务请求,获取租户编码和应用编码,并将服务请求封装为内部请求;
53.步骤1012:根据内部请求的授权信息,判断租户编码和应用编码是否在授权列表,若是,则将内部请求标记为鉴权通过,获得有权请求,若否,则返回非法访问提示;
54.步骤1013:根据有权请求,访问应用。
55.在本实施例中,应用数据的隔离方法,运用需依托于应用管理的低代码平台生成的应用,这些应用至少需要支持以下场景的规则,如图3所示的用户用例示意图,首先,配置用户在低代码平台创建应用,每个应用定义自已的一套数据表,系统生成物理表时默认给整套表都加上应用编码前缀;在最终用户访问应用时,应用的url是站点根地址 租户编码 应用编码,(例如:http://192.168.0.11:22110/hy/generator)进到应用后,所有功能菜单的访问url后缀都是对应功能的编码(例如:http://192.168.0.11:7090/hy/saas/hy/generator/api/1528569364180250624_list_1653275130522);
56.服务容器内接收到请求(服务请求),从请求(服务请求)的url中获取租户编码和应用编码,封装为内部请求;如图4所示的鉴权过滤器,将内部请求通过鉴权过滤器进行鉴权,根据内部请求的授权信息,判断租户编码和应用编码是否在授权列表,若否,则无权限访问的内部请求不做任何处理,直接返回并提示用户非法访问,若是,则将内部请求标记为鉴权通过,获得通过鉴权的有权请求,进入下一步,并根据有权请求,访问应用。
57.步骤102:根据编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中,根据上下文和拦截器,将第一操作数据库的第一数据表名添加编码的前缀,获得第二
操作数据库,根据有权请求和上下文,操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据。
58.可选的,步骤102具体包括步骤1021至步骤1023,各步骤具体如下:
59.步骤1021:根据租户编码和应用编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中;
60.在本实施例中,使用租户编码和应用编码初始化上下文,使用本地线程(threadlocal)实现上下文数据的临时存储。
61.步骤1022:将上下文赋给元数据引擎,根据上下文、元数据引擎和持久层框架的拦截器,将第一操作数据库的第一数据表名中添加租户编码和应用编码的编码前缀,获得第二操作数据库;
62.可选的,步骤1022具体为:将上下文赋给元数据引擎,元数据引擎在拦截器中获取到要数据操作的数据库,获得第一操作数据库;根据分析第一操作数据库,获取第一数据表名,将第一数据表名中添加租户编码和应用编码的编码前缀,获得第二数据表名;将第二数据表名替换在第一操作数据库中的第一数据表名,获得第二操作数据库。
63.步骤1023:持久层框架使用第二操作数据库去查询或者更新数据,在业务处理的过程中从本地线程中获取最新上下文,根据有权请求和最新上下文,在应用中进行业务处理,并操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据。
64.作为本实施例的一种举例,请求查询销售员信息转换过程,如图5所示,租户编码为:zws,应用编码为:sales,将上下文赋给元数据引擎,元数据引擎使用这个上下文,通过mybatis(持久层框架)拦截器给操作数据库的表加上前缀。在拦截器中获取到要查询或更新数据的sql(第一操作数据库),分析sql,取到要操作的第一数据表名,给第一数据表名加上租户和应用前缀,再将带有前缀的数据表名(第二数据表名)替换回sql,mybatis(持久层框架)使用替换后的sql(第二操作数据库)去查询或更新数据,从而实现了不同应用的请求处理的是各自的数据表,隔离应用的数据与非本应用的数据,应用数据隔离,如图6所示,可以在低代码平台中创建的多应用,每个应用有各自的数据表;每个应用在访问时有自已的上下文;应用之前没有直接的交互;应用之间不会互相干扰;多个应用在同一个服务容器内。
65.实施本发明实施例,在接收服务请求后,获取服务请求的编码,同时将服务请求封装为内部请求,根据内部请求,进行鉴权过滤,获得有权请求;根据编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中,使用本地线程存储上下文数据,进行线程隔离,避免并发时线程安全问题,保证并发时线程的安全性,同时也实现了应用的隔离。再根据上下文和拦截器,将操作数据库的原始数据表名添加编码的前缀,获得更名后的操作数据库,根据有权请求和更名后的操作数据库,处理业务,隔离其他应用数据。对数据表名添加服务请求中的编码前缀,不同应用的请求处理的是有各自前缀的数据表,隔离其他应用数据,实现一个服务容器中可同时运行多个应用,不同应用数据互相不干扰。上下文中设置好租户编码和应用编码,每个请求中的数据查询、数据更新、缓存获取和更新,都先从上下文获取租户编码和应用编码,再去处理数据,从而实现了租户隔离、应用隔离。
66.实施例二
67.相应地,参见图7,图7是本发明提供的应用数据的隔离系统的实施例二的结构示
意图。如图7所示,应用数据的隔离系统包括封装鉴权模块701和请求处理模块702;
68.其中,封装鉴权模块701用于接收服务请求,并提取服务请求中的编码,将服务请求封装为内部请求,根据服务容器的应用,对内部请求进行鉴权过滤,获得有权请求,根据有权请求,访问应用;
69.可选的,封装鉴权模块701包括封装单元7011、鉴权单元7012和访问应用单元7013;
70.其中,封装单元7011用于接收服务请求,根据服务请求,获取租户编码和应用编码,并将服务请求封装为内部请求。
71.鉴权单元7012用于根据内部请求的授权信息,判断租户编码和应用编码是否在授权列表,若是,则将内部请求标记为鉴权通过,获得有权请求,若否,则返回非法访问提示。
72.访问应用单元7013用于根据有权请求,访问应用。
73.请求处理模块702用于根据编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中,根据上下文和拦截器,将第一操作数据库的第一数据表名添加编码的前缀,获得第二操作数据库,根据有权请求和上下文,操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据。
74.可选的,请求处理模块702包括本地线程单元7021、添加前缀单元7022和处理业务单元7023。
75.其中,本地线程单元7021用于根据租户编码和应用编码,初始化应用的上下文,并将上下文的数据临时存储在本地线程中。
76.添加前缀单元7022用于将上下文赋给元数据引擎,根据上下文、元数据引擎和持久层框架的拦截器,将第一操作数据库的第一数据表名中添加租户编码和应用编码的编码前缀,获得第二操作数据库。
77.可选的,添加前缀单元7022包括获取子单元、添加子单元和替换子单元;
78.其中,获取子单元用于将上下文赋给元数据引擎,元数据引擎在拦截器中获取到要数据操作的数据库,获得第一操作数据库;
79.添加子单元用于根据分析第一操作数据库,获取第一数据表名,将第一数据表名中添加租户编码和应用编码的编码前缀,获得第二数据表名;
80.替换子单元用于将第二数据表名替换在第一操作数据库中的第一数据表名,获得第二操作数据库。
81.处理业务单元7023用于持久层框架使用第二操作数据库去查询或者更新数据,在业务处理的过程中从本地线程中获取最新上下文,根据有权请求和最新上下文,在应用中进行业务处理,并操作应用的第一数据表和第二操作数据库,隔离应用的数据与非本应用的数据。
82.另外,本技术实施例还提供一种计算机设备,计算机设备包括处理器和存储器,存储器用于存储计算机程序,计算机程序被处理器执行时实现上述任意方法实施例中的步骤。
83.本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任意方法实施例中的步骤。
84.实施本发明实施例,使用对数据表加租户编码和应用编码前缀、服务请求的访问
地址(url)带租户编码和应用编码、本地线程(threadlocal)进行线程隔离,实现应用数据隔离方法,实现了一个服务容器中同时运行多个应用,且不互相干扰,使用java的threadlocal进行线程隔离,避免了并发时线程安全问题,同时也实现了应用的隔离,业务处理逻辑过程中都从threadlocal获取上下文,保证处理的数据都是当前应用的数据。
85.以上的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献