异构权限数据转换与动态路由安全注册及降级兜底方法与流程

摘要: 本发明属于计算机数字数据处理,特别涉及一种异构权限数据转换与动态路由安全注册及降级兜底方法。背景技术:1、随着管理系统前后端分离发展,同一前端应用需要同时接入多...
异构权限数据转换与动态路由安全注册及降级兜底方法与流程

本发明属于计算机数字数据处理,特别涉及一种异构权限数据转换与动态路由安全注册及降级兜底方法。

背景技术:

1、随着管理系统前后端分离发展,同一前端应用需要同时接入多个由不同技术体系、不同业务部门或不同开发团队建设的后端服务。不同后端服务在认证方式、接口协议、数据结构、菜单模型、权限编码、资源标识以及业务能力描述等方面存在较大差异。

2、现有技术中,前端系统适配多个异构后端服务通常采用以下两种方式:

3、第一种方案,为针对不同后端分别开发前端页面和路由体系,但登录页面、管理界面框架、用户管理、角色管理、部门管理、菜单管理及错误异常页面等通用功能需要在不同前端工程中重复实现,造成代码重复、维护成本高且不同实现逐渐产生差异。

4、第二种方案,根据不同后端返回的菜单、权限和路由数据动态生成前端路由,减少页面重复开发,但由于不同后端返回的权限字段、菜单字段、路由字段和组件标识不统一,前端仍需针对不同后端编写大量适配逻辑。随着后端数量增加,前端针对不同后端实现的差异化适配逻辑不断增加,使前端路由生成、权限处理等功能与具体后端的数据结构及实现方式形成较强耦合,从而降低了系统的可扩展性和可维护性。

5、现有动态路由实现通常包括后端直接返回组件路径并由前端动态导入、后端返回组件标识并由前端组件注册表进行映射、基于模块批量导入机制建立组件模块映射,以及前端预定义路由并由后端权限数据控制访问等方式。其中存在以下技术问题:

6、第一,安全约束不足:后端直接返回组件路径(如pagepath="@/views/order/list.vue")时,后端数据直接参与前端模块加载,路由数据、组件数据与权限数据之间缺少关联校验,导致未授权路由被注册、非预期组件被加载或已有组件因路由配置错误被错误暴露。即使采用组件注册表对后端返回的组件标识进行映射,若仅校验组件标识而未同时校验后端是否具备对应业务能力、用户是否具有对应权限及路由路径是否符合规则,仍会出现权限、能力、路由和组件相互脱离的问题。

7、第二,公共能力与后端特有能力耦合:不同后端之间存在认证方式、安全能力和运行能力等方面的差异。若前端通过判断具体后端类型的方式处理上述差异,则随着后端服务数量增加,前端需要持续增加与具体后端类型相关的处理逻辑,使公共页面、公共组件及公共功能逐渐依赖后端特有的实现方式,增加公共前端的适配复杂度,并降低公共能力的复用性和可维护性。

8、第三,运行时状态难以可靠管理:在用户登录、权限变化、后端切换或会话失效情况下,动态菜单、权限快照、能力状态、动态路由及组件注册状态之间存在依赖关系。缺少统一的状态标识和生命周期管理机制时,在并发初始化、重复登录、重复注册或退出登录等场景下,产生动态路由重复注册、旧会话路由残留、菜单与实际路由不一致、不同用户之间状态串扰等问题。

9、第四,异常处理导致状态不一致:对于动态路由注册失败、组件加载失败或权限校验失败等异常,现有实现通常直接终止路由注册或跳转至通用错误页面,导致菜单已显示但对应路由无法访问,用户点击后无确定页面响应,前端导航状态与实际运行状态不一致。

10、综上所述,如何在不修改各异构后端原有业务实现的情况下,使多个异构后端服务能够安全接入同一套前端应用,并解决异构数据统一转换、后端能力识别与公共能力分离、动态路由安全注册、幂等性保证、异常降级以及生命周期状态一致性等问题,成为亟待解决的技术问题。

技术实现思路

1、本发明的目的在于提供一种异构权限数据转换与动态路由安全注册及降级兜底方法,克服现有多异构后端接入统一前端时,权限及能力数据结构不统一、动态路由组件加载安全约束不足、公共能力与后端特有能力耦合以及前端运行状态难以可靠管理等问题。

2、为达成上述目的,本技术提供一种异构权限数据转换与动态路由安全注册及降级兜底方法,包括以下步骤:

3、s1、异构数据适配:在异构后端服务与统一前端运行支撑机制之间设置异构数据适配层,所述统一前端运行支撑机制至少提供统一权限处理、能力管理、动态路由管理、受控组件注册、运行状态管理及生命周期清理功能;所述异构数据适配层包含按后端标识登记的多个适配实例,异构数据适配层通过当前后端标识选择适配实例,获取当前后端的原始数据,并将原始数据转换为统一数据模型,所述原始数据包括用户、角色、部门、菜单、资源、权限、路由、能力及布局数据;

4、s2、建立统一权限模型:基于统一数据模型构建统一权限模型,依据当前后端标识、用户标识、会话标识建立权限访问快照;权限访问快照至少包含上下文代次、快照版本、配置快照标识,作为菜单显示、路由生成、能力判断及授权校验的统一依据;

5、s3、建立统一能力模型:基于统一权限模型构建统一能力模型,为每项能力分配唯一能力标识,将前端功能划分为公共能力、业务特有能力和扩展能力;针对业务特有能力建立异构后端能力矩阵,以后端标识与能力标识作为矩阵维度,记录各后端是否提供各项业务特有能力;

6、s4、动态路由候选生成:依据异构后端能力矩阵获取功能可用性结果,将业务路由与功能可用性结果关联;对于能力可用且当前用户满足对应权限访问条件的业务路由,从统一路由数据中提取路径、组件标识、能力标识及菜单标识,生成动态路由候选;

7、s5、路径归一化:对动态路由候选的路径执行归一化处理,分离路径与附加信息,统一路径格式,生成规范化路径;未经归一化的候选禁止进入后续校验;

8、s6、权限关联校验:对归一化通过的候选,建立规范化路径、能力标识、权限标识与权限访问快照的关联,校验快照版本、上下文代次与访问上下文一致,调用统一权限求值器完成权限关联校验;

9、s7、组件白名单校验:根据组件标识查询受控组件注册表,校验组件记录启用且匹配当前后端标识及能力标识;

10、s8、联合校验:确认步骤s5-s6的校验结果属于同一后端标识、用户标识、会话标识、上下文代次和动态路由候选,查询能力矩阵及关联记录并确认动态路由候选对应的能力、权限及组件关联关系处于有效状态;

11、s9、动态路由幂等注册:对联合校验通过的候选生成路由密钥和注册密钥;通过注册状态机管控注册流程,同一访问上下文中重复或并发请求复用已有注册任务,保证同一路由仅执行一次路由表写入;

12、s10、静态业务路由运行时授权:对于已预先存在于前端路由表中的静态业务路由,在用户访问时依据当前后端能力、用户权限及权限访问快照执行运行时授权校验,并根据校验结果确定是否允许访问;

13、s11、降级路由兜底:当目标路由发生组件加载失败或可恢复写入失败且当前能力、用户权限及上下文仍有效时,将目标路由映射至预先配置的固定降级组件并建立降级路由;权限拒绝、后端能力不可用或访问上下文失效的异常不执行降级路由映射;

14、s12、生命周期逆序清理:建立与会话绑定的生命周期状态清单,记录权限快照、能力状态、菜单节点及路由注册的依赖关系;在会话失效或上下文切换时,按照页面、路由、菜单、权限快照的逆序依赖关系执行清理,旧上下文异步任务结果禁止写入新访问上下文。

15、进一步,在步骤s1中,适配实例采用以下转换规则:

16、后端标识由当前选中的适配实例固定写入,不从用户数据、路径或其他业务字段推断;

17、用户与角色、菜单与路由、路由与权限以及路由与能力之间,仅根据原始标识执行全值相等连接;

18、原始权限、能力、组件和路由类型仅通过当前后端标识下预先登记的精确映射项转换,不存在映射项时记录数据映射未找到;

19、解析过程识别出重复标识则记录标识冲突,发现被引用记录缺失时的情况,记录关系缺失并停止形成对应统一记录;

20、各后端的布尔值、根节点值和空值均遵循后端自身的解析规则转换,不同后端之间不混用解析转换逻辑。

21、进一步,在步骤s3中,公共能力与业务特有能力的划分包括:

22、获取统一前端拟提供的功能集合,确定各项功能的业务含义、页面、组件及操作范围;

23、将在全部异构后端中具有共同基础语义、能够复用统一页面或布局组件,且后端差异能够通过适配规则消除的功能确定为公共能力,并为公共能力设置统一公共能力标识;

24、将仅由单个或部分异构后端提供、业务实现依赖对应异构后端的功能划定为业务特有能力,并配置统一业务能力标识。

25、进一步,在步骤s3中,构建统一能力模型包括以下步骤:

26、s3.1、定义公共能力、业务特有能力及扩展能力的能力标识、能力名称和能力类型;

27、s3.2、为公共能力关联统一前端页面、组件及可选默认路径;

28、s3.3、通过异构数据适配层将不同后端中表示同一业务含义的原始能力映射至相同能力标识;

29、s3.4、将能力记录与统一路由数据通过能力标识关联,并保留后端自定义路径;

30、s3.5、输出统一能力记录,供能力矩阵建立和能力权限联合判断使用。

31、进一步,在步骤s5中,归一化处理包括以下步骤:

32、s5.1、校验动态路由候选的后端标识、用户标识、会话标识、上下文代次与当前访问上下文一致;

33、s5.2、判断原始路径是否为非空字符串,并校验原始路径长度及预设路径层级限制;

34、s5.3、解析原始路径并分离原始路径、查询参数和片段标识,原始路径包含外部地址信息则判定处理失败;

35、s5.4、统一正斜杠、重复分隔符、当前层级标识及起始根路径形式;

36、s5.5、校验上级目录标识、编码字符、控制字符、普通路径片段、动态参数及通配符;

37、s5.6、生成规范化路径并校验其长度、层级及与受限路径的冲突;

38、s5.7、将原始路径、规范化路径及处理结果写入处理记录,仅将规范化通过的候选提交至后续校验。

39、进一步,在步骤s7的校验过程中,预先配置受控组件注册表,受控组件注册表内存储组件标识、对应的组件加载器、后端适用范围以及关联能力标识;异构后端仅允许输出组件标识,禁止直接输出前端组件文件路径;校验时根据动态路由候选的组件标识对受控组件注册表进行精确检索,依次校验组件记录为启用状态、组件适配当前后端标识、组件关联能力标识与动态路由候选的能力标识相匹配;任意一项校验条件不满足,则拒绝该动态路由候选进入下一处理流程。

40、进一步,所述步骤s9中,所述动态路由幂等注册包括:

41、s9.1、依据动态路由候选的规范化路径、组件标识、能力标识、权限标识生成路由密钥;在路由密钥基础上叠加后端标识、用户标识、会话标识以及上下文代次生成注册密钥;

42、s9.2、以注册密钥为键维护注册状态,注册状态包括未注册、注册中、已注册、失败及已移除;状态迁移规则为:未注册状态或满足重试条件的失败状态切换至注册中状态,注册中状态再转为已注册状态或失败状态,已注册状态在生命周期清理时切换为已移除状态;

43、s9.3、首个请求将状态变更为注册中并执行路由写入,后续相同密钥请求复用首个请求任务与处理结果;处于已注册状态则直接返回已有结果,不重复执行写入;临时性失败允许重试,路径冲突及权限拒绝场景不执行重试;

44、s9.4、父子路由分别生成对应密钥,子路由复用父路由的注册任务,父路由注册失败则子路由不予写入;不同前端标签页分别独立维护注册状态以及路由句柄。

45、进一步,在步骤s10中,所述运行时授权校验包括以下步骤:

46、s10.1、接收路由访问请求,在目标路由激活前读取当前访问上下文中的后端标识、用户标识及会话标识;

47、s10.2、根据当前后端标识、规范化路径或路由名称查询静态业务路由授权登记表,取得对应授权记录;

48、s10.3、判断授权记录是否存在、是否启用及授权方式是否能够确定;

49、s10.4、取得当前权限访问快照,记录本次校验采用的上下文代次、快照版本;

50、s10.5、当授权方式要求能力判断时,查询能力矩阵确认对应能力并且处于启用状态;

51、s10.6、当授权方式要求权限判断时,调用统一权限求值器进行权限校验;

52、s10.7、校验规范化路径与授权记录中的路径或路径模式相匹配;

53、s10.8、根据组件标识查询组件注册表,确认组件记录存在且处于启用状态;

54、s10.9、全部条件满足时允许路由导航,任一条件不满足时拒绝激活目标组件。

55、进一步,在步骤s11中,所述降级路由兜底具体包括以下步骤:

56、s11.1、接收异常事件及对应候选、注册记录或运行时授权记录;

57、s11.2、根据追踪标识、后端标识、用户标识、会话标识及上下文确认异常属于当前有效上下文;

58、s11.3、根据异常原因编码查询启用的匹配策略,确认异常属于允许降级的异常集合;

59、s11.4、确认原路由已满足路径归一化及权限校验的前置状态;

60、s11.5、确认目标能力标识仍由当前后端标识提供且权限求值仍允许;

61、s11.6、根据固定降级组件标识查询降级组件注册表,并取得受控降级组件加载器;

62、s11.7、生成降级注册唯一标识并建立降级路由;

63、s11.8、降级路由建立成功则将降级状态设为激活,建立失败则将降级状态设为失败。

64、进一步,在步骤s12中,生命周期逆序清理包括以下步骤:

65、s12.1、接收退出、会话失效或后端切换、快照撤销或应用重置事件,定位生命周期状态清单;

66、s12.2、根据生命周期标识及上下文代次生成清理标识,通过原子状态变更将生命周期状态设置为冻结;

67、s12.3、将当前上下文代次保存为失效代次,并增加代次或解除旧会话标识与该上下文代次的当前绑定;

68、s12.4、在候选生成、路由注册、降级建立及页面激活的写入口校验生命周期状态与上下文代次,属于失效代次或生命周期非激活状态则拒绝写入;

69、s12.5、取消能够取消的未完成任务,对不能取消的任务标记原代次失效;

70、s12.6、终止未完成的业务导航,解除活动页面与授权上下文的关联,禁止旧页面继续执行受限操作;

71、s12.7、按逆序依赖关系依次移除降级路由、动态路由、菜单节点、能力状态、权限访问快照及会话绑定;

72、s12.8、在资源清除后,将生命周期状态设为已清除。

73、采用上述方案后,本发明的有益效果在于:

74、1、本发明通过在异构后端服务与统一前端运行支撑机制之间设置异构数据适配层,将不同后端的权限、路由、能力等异构数据转换为统一数据模型和统一权限模型,使多个异构后端能够共用同一套前端页面、组件及运行时,新增后端仅需补充适配映射规则,无需针对不同后端重复开发公共前端页面。同时,以权限访问快照作为菜单显示、路由生成、能力判断及授权校验的统一数据依据,避免不同页面分别解析不同后端数据所造成的数据口径不一致和权限判断不一致问题。

75、2、本发明建立统一能力模型和异构后端能力矩阵,将登录、用户管理、角色管理等公共能力与各后端特有的业务能力分离。公共能力统一提供,后端特有能力独立扩展,降低不同后端业务差异对公共前端运行时的影响,减少针对具体后端类型编写条件分支逻辑所带来的耦合,提高了系统的可扩展性。

76、3、本发明建立连续的安全校验流程:路径归一化→权限关联校验→组件白名单校验→联合校验→幂等注册。未经归一化的原始路径不得进入后续流程;组件仅能通过受控组件注册表查询受信任加载器,禁止后端直接指定文件路径;仅当后端能力、用户权限、规范化路径及组件标识全部匹配时,才允许注册。多条件联合约束有效避免了未授权路由注册和非预期组件加载的安全风险。

77、4、本发明通过路由密钥和注册密钥标识路由业务身份,通过注册状态机管控注册流程,同一访问上下文中重复或并发请求复用已有注册任务,保证同一路由仅执行一次路由表写入,避免重复注册和并发竞争导致的运行时状态异常。

78、5、本发明对已预先编译的前端业务组件执行运行时授权校验,组件或路由的物理存在状态不作为用户具有访问权限的判断依据,使“前端具备组件加载能力”与“当前用户具有业务访问权限”形成相互独立的判断条件,防止通过静态组件存在状态绕过权限控制。

79、6、本发明建立降级路由兜底机制,在可恢复异常时将目标路由映射至固定降级页面,形成“菜单→路由→固定页面”的对应关系,避免菜单显示但页面无响应的问题;权限拒绝等安全异常禁止降级,防止利用降级机制绕过安全控制。同时,结构化审计机制对处理各阶段的关键事件进行记录,便于异常追踪和问题定位。

80、7、本发明建立与会话绑定的生命周期状态清单,在会话失效或上下文切换时按照页面、路由、菜单、权限快照的逆序依赖关系执行清理,旧上下文的异步任务结果禁止写入新访问上下文,有效避免不同用户、不同后端或不同权限上下文之间的状态串扰和残留问题。