System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术主要涉及权限管理,具体涉及一种基于抽象语法树的权限控制方法及控制系统。
技术介绍
1、权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。
2、为了实现系统中的权限管理,会基于不同的细粒度维护一份权限数据,一般会精细到用户是否有权调用某个接口,在系统的迭代升级过程当中难免会有页面、接口的增删改,因此需要频繁对权限数据进行调整,在完全手动修改的过程下这个过程十分繁琐,而且如果修改有误可能会导致不可预知的错误。
技术实现思路
1、针对现有技术存在的技术问题,本专利技术提供一种完善权限管理过程中权限数据生成、存储和使用的基于抽象语法树的权限控制方法及控制系统。
2、为解决上述技术问题,本专利技术提出的技术方案为:
3、一种基于抽象语法树的权限控制方法,包括步骤:
4、步骤101、基于系统前端源代码,获取路由信息;
5、步骤102、遍历路由信息,遍历过程中获取页面入口源代码,将其解析为抽象语法树,遍历抽象语法树获取页面入口文件依赖模块的信息,递归遍历依赖模块信息获取其依赖模块和请求接口信息,结束后生成权限树;
6、步骤103、将权限树转换为xml文件,后端通过接口的形式将此xml文件解析为json在系统中使用;
7、步骤104、系统请求权限树接口,基于权限树上的信息控制页面展示。
9、步骤201、读取页面内容,结合编译工具生成页面的抽象语法树;
10、步骤202、遍历抽象语法树收集页面依赖文件的信息;
11、步骤203、遍历抽象语法树收集页面依赖的请求信息;
12、步骤204、递归遍历依赖文件信息重复执行前面的步骤,直至页面所有的依赖文件都已经解析过;
13、步骤205、收集到页面所有的依赖信息和请求信息。
14、优选地,步骤201的具体过程为:
15、步骤2011、词法分析,将输入的代码字符串分解成词法单元,也称为令牌;
16、步骤2012、语法分析,在词法分析的基础上将单词序列组合成各类语法短语;
17、步骤2013、生成抽象语法树。
18、优选地,在步骤101中,基于项目的路径映射配置,找到前端源代码中路由信息配置入口文件路径并将其转换为绝对路径,通过文件路径读取文件内容,进一步地通过编译工具和相应插件将路由入口文件和其依赖文件中的模块化语法转换为commonjs语法,进一步地通过commonjs导入语法获取到路由信息。
19、优选地,在步骤102中,遍历路由采用深度优先遍历,遍历过程中将父节点路径标识传递给子节点,与子节点的路径标识进行合并,用于表示当前节点的唯一标识;遍历到叶子节点时暂停下来,路由信息中叶子节点一般为页面配置对象,通过叶子节点是否有子节点、是否包含页面入口文件路径信息来判断是否跳过当前叶子节点继续进行遍历;若路由中包含一些布局组件,而这些布局组件中使用到了请求,此时也需匹配它们的请求信息,根据不同的业务需求将这些请求划分到公共模块或者划分到页面里面;若划分到公共请求里则在遍历过程中需收集所有布局组件信息,待遍历完成后单独解析处理;若划分到页面里面,将布局组件信息传递到叶子节点,与叶子节点的页面入口文件信息进行合并,后续一起解析其依赖和请求信息。
20、优选地,在步骤102中,遍历抽象语法树,遍历过程中基于模块导入的语法特征匹配入口文件依赖的其他模块文件信息、基于请求定义语法特征匹配页面的请求信息,遍历结束后对入口文件的依赖信息进行解析,递归遍历依赖文件重复依赖文件转换为抽象语法树和匹配文件的依赖、请求信息过程,依赖文件和依赖文件的依赖都处理完毕,得到单个页面依赖的所有请求信息;
21、进一步地,保留解析完成页面在路由数据中的结构和解析获得的请求信息,继续按深度优先的遍历方法遍历路由信息,直至遍历完成后生成一颗包含原始路由结构和所获取页面请求信息的权限树。
22、优选地,在步骤201中,页面入口文件内容到抽象语法树的转换过程包括:
23、1)词法分析,各字符依次地读取源程序,然后根据构词规则识别单词,生成token符号流;
24、2)语法分析,在词法分析的基础上将单词序列组合成各类语法短语;各类语法短语之间的依赖和嵌套关系,就构成了一个抽象语法树。
25、优选地,在步骤203中,在匹配获取依赖信息的同时,基于请求语法匹配请求有关信息,包括请求名称、请求方法、请求地址,遍历结束后获取到入口文件的依赖信息和请求信息。
26、优选地,在步骤104中,前端页面初始化时请求权限树接口,根据权限树中的模块、子路由、页面层级确定用户有权访问那些模块和页面,根据请求接口层级确定用户有权限调用哪些接口即使用页面中的哪些功能,进而实现系统的权限控制。
27、本专利技术还公开了一种基于抽象语法树的权限控制系统,包括存储器和处理器,所述存储器上存储有程序,所述程序在被处理器运行时执行如上所述的基于抽象语法树的权限控制方法的步骤。
28、与现有技术相比,本专利技术的优点在于:
29、本专利技术基于抽象语法树的权限控制方法能够基于项目源码信息自动生成权限管理流程中所需的权限数据,系统服务端基于不用角色生成、存储权限数据,客户端基于登录用户的角色获取相应权限数据对系统展示进行控制,实现权限管理过程中权限数据的生成、存储和使用,解决了系统开发迭代过程中权限信息频繁更新的问题,完善权限管理过程中权限数据生成、存储、使用的流程。
本文档来自技高网...【技术保护点】
1.一种基于抽象语法树的权限控制方法,其特征在于,包括步骤:
2.根据权利要求1所述的基于抽象语法树的权限控制方法,其特征在于,步骤102的具体过程为:
3.根据权利要求2所述的基于抽象语法树的权限控制方法,其特征在于,步骤201的具体过程为:
4.根据权利要求1或2或3所述的基于抽象语法树的权限控制方法,其特征在于,在步骤101中,基于项目的路径映射配置,找到前端源代码中路由信息配置入口文件路径并将其转换为绝对路径,通过文件路径读取文件内容,进一步地通过编译工具和相应插件将路由入口文件和其依赖文件中的模块化语法转换为CommonJs语法,进一步地通过CommonJs导入语法获取到路由信息。
5.根据权利要求2或3所述的基于抽象语法树的权限控制方法,其特征在于,在步骤102中,遍历路由采用深度优先遍历,遍历过程中将父节点路径标识传递给子节点,与子节点的路径标识进行合并,用于表示当前节点的唯一标识;遍历到叶子节点时暂停下来,路由信息中叶子节点一般为页面配置对象,通过叶子节点是否有子节点、是否包含页面入口文件路径信息来判断是否跳过当前叶
6.根据权利要求2或3所述的基于抽象语法树的权限控制方法,其特征在于,在步骤102中,遍历抽象语法树,遍历过程中基于模块导入的语法特征匹配入口文件依赖的其他模块文件信息、基于请求定义语法特征匹配页面的请求信息,遍历结束后对入口文件的依赖信息进行解析,递归遍历依赖文件重复依赖文件转换为抽象语法树和匹配文件的依赖、请求信息过程,依赖文件和依赖文件的依赖都处理完毕,得到单个页面依赖的所有请求信息;
7.根据权利要求3所述的基于抽象语法树的权限控制方法,其特征在于,在步骤201中,页面入口文件内容到抽象语法树的转换过程包括:
8.根据权利要求3所述的基于抽象语法树的权限控制方法,其特征在于,在步骤203中,在匹配获取依赖信息的同时,基于请求语法匹配请求有关信息,包括请求名称、请求方法、请求地址,遍历结束后获取到入口文件的依赖信息和请求信息。
9.根据权利要求2或3所述的基于抽象语法树的权限控制方法,其特征在于,在步骤104中,前端页面初始化时请求权限树接口,根据权限树中的模块、子路由、页面层级确定用户有权访问那些模块和页面,根据请求接口层级确定用户有权限调用哪些接口即使用页面中的哪些功能,进而实现系统的权限控制。
10.一种基于抽象语法树的权限控制系统,包括存储器和处理器,所述存储器上存储有程序,其特征在于,所述程序在被处理器运行时执行如权利要求1-9中任意一项所述的基于抽象语法树的权限控制方法的步骤。
...【技术特征摘要】
1.一种基于抽象语法树的权限控制方法,其特征在于,包括步骤:
2.根据权利要求1所述的基于抽象语法树的权限控制方法,其特征在于,步骤102的具体过程为:
3.根据权利要求2所述的基于抽象语法树的权限控制方法,其特征在于,步骤201的具体过程为:
4.根据权利要求1或2或3所述的基于抽象语法树的权限控制方法,其特征在于,在步骤101中,基于项目的路径映射配置,找到前端源代码中路由信息配置入口文件路径并将其转换为绝对路径,通过文件路径读取文件内容,进一步地通过编译工具和相应插件将路由入口文件和其依赖文件中的模块化语法转换为commonjs语法,进一步地通过commonjs导入语法获取到路由信息。
5.根据权利要求2或3所述的基于抽象语法树的权限控制方法,其特征在于,在步骤102中,遍历路由采用深度优先遍历,遍历过程中将父节点路径标识传递给子节点,与子节点的路径标识进行合并,用于表示当前节点的唯一标识;遍历到叶子节点时暂停下来,路由信息中叶子节点一般为页面配置对象,通过叶子节点是否有子节点、是否包含页面入口文件路径信息来判断是否跳过当前叶子节点继续进行遍历;若路由中包含一些布局组件,而这些布局组件中使用到了请求,此时也需匹配它们的请求信息,根据不同的业务需求将这些请求划分到公共模块或者划分到页面里面;若划分到公共请求里则在遍历过程中需收集所有布局组件信息,待遍历完成后单独解析处理;若划分到页面里面,将布局组件信息传递到叶子节点,与叶子节点的页面入口文件信息...
【专利技术属性】
技术研发人员:吕当振,伍奕涵,孙晋,孙杰懿,刘静,李雅婷,欧阳黎涛,
申请(专利权)人:国网湖南省电力有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。