基于事务机制的多租户身份切换方法、装置、设备及存储介质与流程
本技术涉及身份认证,尤其涉及基于事务机制的多租户身份切换方法、装置、设备及存储介质。
背景技术:
1、在多租户软件即服务(software as a service,saas)平台中,一个账户通常被授予多个身份,例如同一用户既可以是甲企业的员工,也可以是乙企业的外部顾问,还可以具有平台的管理员身份。为支持用户在不同业务场景下使用不同身份进行操作,平台需要提供身份切换功能。在协同办公平台中,用户可能同时是多个组织或企业的成员,需要在不同组织的上下文中处理各自的事务;在人力资源管理平台中,用户可能同时具有普通员工和部门主管两种角色;在客户服务平台中,管理员需要临时模拟普通用户的身份来验证问题或协助操作。在上述场景中,用户均需要在不同身份之间进行切换,以完成对应身份下的事务处理。
2、现有技术中,身份切换所涉及的多个切换操作在系统中独立执行,各操作之间缺少统一的错误恢复机制。在切换过程中,可能出现部分切换操作执行成功、部分切换操作执行失败的情况,例如权限配置已加载完成但数据连接建立失败,或身份标识已更新但缓存数据未能成功清除。此时,由于已成功执行的操作无法自动撤销,而失败的操作又未能完成,系统无法确定当前应当处于何种状态:既不属于完整的初始身份状态,也不属于完整的目标身份状态,导致系统处于不一致的中间状态。
3、因此,目前方案存在身份切换过程中操作序列执行中断后系统状态无法确定的技术问题。
技术实现思路
1、本技术的主要目的在于提供一种基于事务机制的多租户身份切换方法、装置、设备及存储介质,旨在解决身份切换过程中操作序列执行中断后系统状态无法确定的技术问题。
2、为实现上述目的,本技术提出一种基于事务机制的多租户身份切换方法,所述基于事务机制的多租户身份切换方法包括:
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、此外,为实现上述目的,本技术还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如上文所述的基于事务机制的多租户身份切换方法的步骤。
41、本技术提出的一个或多个技术方案,至少具有以下技术效果:
42、本技术通过将身份切换过程中原本独立执行的多个切换操作纳入同一事务上下文中执行,建立了多个操作之间的统一管理关系,并在执行完毕后统一判定多个操作的整体执行结果,据此将事务状态更新为提交状态或回滚状态,进而依据事务状态执行最终切换控制,使得全部操作均成功时系统整体切换至目标身份,任一操作失败时系统整体回滚以维持初始身份,由于上述过程中系统仅存在全部切换或全部不切换两种结果路径,不存在部分操作成功、部分操作失败所对应的中间不确定状态,从而解决了现有技术中身份切换过程中操作序列执行中断后系统状态无法确定的技术问题,实现了身份切换成功或失败时系统均处于一致的确定状态的技术效果。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com