一种用于大型软件的权限组织结构及权限管理方法与流程

文档序号:23727450发布日期:2021-01-26 17:41阅读:120来源:国知局
一种用于大型软件的权限组织结构及权限管理方法与流程

[0001]
本发明属于计算机软件工程领域,具体是软件工程的大型管理软件开发技术领域。在该领域中,本发明可重点应用在大型软件的权限组织结构及权限管理方面。


背景技术:

[0002]
随着现代软件的规模的增加,一个软件所具有的功能、管理的信息数据对象和参与使用人群类别越来越多。只有当软件的权限按业务所期待的设定进行分配和管理后,才能使整个软件系统安全、高效地运行起来。为了达到这一目标,通常在软件内部有大量的代码分布在各个模块和各个组件中,用于权限的控制。但随着软件规模越来越大,这些与权限相关的功能和逻辑代码非常不便管理,造成维护困难,同时也易产生“权限漏洞”。
[0003]
近几年来,虽然一些机构和研究者提出了一些权限管理方法,能够针对特定的系统或特定应用场景的系统的权限进行友好的管控制。但仍存在特定场景限制,以及权限管理范围不够丰富的缺陷。如特定的新闻发布阅读系统、设备资产管理系统中的权限管理方法。且在权限控制关系上,也主要局限在人员组与功能点(或功能区域),人员组与数据内容之间。难以支撑更加精细的权限控制。


技术实现要素:

[0004]
本发明的目的在于克服现有技术的不足,提供一种能同时起到对用户权限、功能权限、菜单权限、数据类别权限、数据所属权限、数据状态权限、数据时效权限的组合式控制,通用性更强、代码管控成本更低、权限管理更细致的用于大型软件的权限组织结构及其权限管理方法。
[0005]
本发明的目的是通过以下技术方案来实现的:一种用于大型软件的权限组织结构,由数据集合和数据关系组成;
[0006]
所述数据集合包括用户集合、用户组集合、功能集合、菜单集合、业务数据集合、数据权限元组集合、状态标示集合、权限控制规则集合和会话数据集合;
[0007]
所述数据关系包括用户与用户组关系、用户组集合关系、功能权限关系、菜单功能隶属关系、菜单功能对应关系、数据模型与功能对应关系、数据状态映射关系、数据状态与权限关系和会话用户与权限关系。
[0008]
进一步地,所述数据集合分别定义如下:
[0009]
用户集合:存储了有权限使用本软件的用户,该集合中至少包含用户的唯一标识或id;
[0010]
用户组集合:存储了软件系统中用户可被分配的所有用户组,该集合中至少包含用户组的唯一标识或id;
[0011]
功能集合:存储了软件系统中的所有运行的功能;
[0012]
菜单集合:存储了软件系统中所有存在权限变化的菜单元素,该集合中至少包含菜单的唯一标识或id;
[0013]
业务数据集合:存储的是软件的业务数据;
[0014]
数据权限元组集合:业务数据集合的横向子集合,即业务数据集合中每条数据都应包含数据权限元组,该数据权限元组包含:数据生成时间、数据最近更新时间、数据状态、数据创建人;
[0015]
状态标示集合:软件系统中所有数据状态的解释内容集合;
[0016]
权限控制规则集合:存储的是权限控制规则,该集合的每一项均代表一个权限规则,每一项规则中定义了用户组标识、功能标识、业务数据来源标识、数据状态标识,以及规则界定标识(允许或禁止);
[0017]
会话数据集合:该集合包含了系统中正处于登录状态用户的基本信息。
[0018]
进一步地,所述关系集合分别定义如下:
[0019]
用户与用户组关系:表示用户属于的用户组,同一用户允许属于多个用户组;
[0020]
用户组集合关系:表示用户组存在于哪些权限规则中;
[0021]
功能权限关系:表示软件中的不同功能点存在于哪些权限规则中;
[0022]
菜单功能隶属关系:表示某个菜单在权限满足时,是否会以特定的位置和视觉形态出现有功能点中;
[0023]
菜单功能对应关系:表示某个菜单在执行时所对应的功能点;
[0024]
数据模型与功能对应关系:表示某个业务数据集在权限满足时,是否在某个功能点中被用到;
[0025]
数据状态映射关系:表示某个业务数据集中数据状态所对应的状态含义;
[0026]
数据状态与权限关系:表示某个业务数据集是否受权限规则表的控制;
[0027]
会话用户与权限关系:表示了当前登录的用户的哪些权限规则是生效的。
[0028]
以上关系通过在对应的集合中增加另一关系对象的唯一性标识的方式来实现。
[0029]
本发明还提供一种用于大型软件的权限管理方法,包括以下步骤:
[0030]
p1、进入权限管理功能,为权限检查准备必要数据;
[0031]
p2、检查功能权限:检查当前登录的用户是否能访问用户请求访问的功能;
[0032]
p3、载入菜单及权限数据:找出用户请求访问的功能涉及的菜单并完成权限判断;
[0033]
p4、处理数据:处理用户请求访问的功能对数据的操作,通过对数据库的查询语句的生成、构造,实现更细致的权限控制;
[0034]
p5、返回功能权限不够的信息:若整个权限检查过程在p2阶段未获得通过,则执行本步骤,将访问的功能点、当前会话信息、权限不够的原因信息返回给用户;否则直接执行步骤s6;
[0035]
p6、渲染功能页面:将具备权限的元素依次渲染在界面上;
[0036]
p7:退出或进入新功能:当无用户界面的功能执行完成后,退出整个过程,当有用户界面的功能执行完成后,即进入了新功能。
[0037]
具体地,所述步骤p2包括以下子步骤:
[0038]
p21、根据用户与用户组关系获得当前登录用户的用户组;
[0039]
p22、在权限控制规则集合中找到对应的规则;
[0040]
p23、若无规则或规则允许,即返回true并跳至步骤p3;若有规则且规则为禁止,返回false并跳至步骤p5。
[0041]
具体地,所述步骤p3包括以下子步骤:
[0042]
p31、判断用户请求访问的功能是否存在用户界面;
[0043]
p32、若用户请求访问的功能是否存在用户界面,则根据菜单功能隶属关系查找该功能所包含的菜单;
[0044]
根据包含的菜单,通过对菜单功能对应关系、会话用户与权限关系与权限控制规则集合的逐级查找,判断所包含的菜单是否应该出现在该功能中的特定位置,若是则在已准备好的菜单数据中增加标注为true,否则为false。
[0045]
具体地,所述步骤p4包括以下子步骤:
[0046]
p41、处理数据类别权限:根据数据模型与功能对应关系、数据权限元组集合、功能集合、权限控制规则集合判断该数据的特定类别是否应该在该功能中进行业务数据准备;若具备该权限,在sql查询语句的where子语句中增加对应条件;
[0047]
p42、处理数据所属权限:根据会话用户与权限关系、数据模型与功能对应关系、数据权限元组集合、功能集合判断该数据在创建者所属关系上,是否应该在该功能中进行业务数据准备;若具备该权限,在sql查询语句的where子语句中增加对应条件;
[0048]
p43、处理数据状态权限:根据数据模型与功能对应关系、数据权限元组集合、功能集合、权限控制规则集合判断该数据在某个状态上,是否应该在该功能中进行业务数据准备;若具备该权限,在sql查询语句的where子语句中增加对应条件;
[0049]
p44、处理数据时效权限:根据数据模型与功能对应关系、数据权限元组集合、数据状态与权限关系、权限控制规则集合判断该数据在当前时间点,是否应该在该功能中进行业务数据准备;若具备该权限,在sql查询语句的where子语句中增加对应条件;
[0050]
p45、查询语句构造:根据该功能的原始的业务sql查询语句进行进一步的构建;将p41~p43所准备的where子语句逐一与原始的业务sql查询语句进行组合,并保证语法正确。
[0051]
p46、数据增/改/查:将最终的sql查询语句发送至数据库,获得与该功能对应的数据内容。该过程执行后,若该功能无功能界面,进入p7,若有用户界面先进入p6。
[0052]
具体地,所述步骤p6包括以下子步骤:
[0053]
p61、显示与该功能对应的页面基础模板;
[0054]
p62、检查已准备好的菜单数据,将标记为true的菜单显示在指定页面区域;
[0055]
p63、将经过权限过滤的业务数据显示有页面上。
[0056]
具体地,所述步骤p2、p3和所有p4中,权限判断方法为:若权限控制规则集合中有多条同一条件下的权限规则,在允许和禁止规则小于或等于2条时,采用最近规则判断;否则,为防止规则冲突和错误的允许或禁止,采用最近规则均衡决断的算法进行判断:
[0057][0058]
b的值为布尔值,当b=1时,认为权限允许,当b=0时认为权限禁止;
[0059]
其中,d

n
代表最近一条规则为允许的日期,d

n-1
代表距最近一条允许的日期最近的一条允许的日期;n
true
代表最近允许的规则数量;d
n
代表最近一条规则为禁止的日期,d
n-1
代表距最近一次禁止的日期最近的一条禁止规则的日期;n
false
代表最近禁止的规则数量;
各设置禁止或允许的规则的时间点,两两计算求和后再进行大小判断,最后得到b值。
[0060]
本发明的有益效果是:
[0061]
1、本发明以切面编程的模式运行,即执行每个功能时均进行权限检查,因采用切面编程实现,在代码编写时维护一套即可,降低了维护成本。
[0062]
2、本发明能同时起到对用户权限、功能权限、菜单权限、数据类别权限、数据所属权限、数据状态权限、数据时效权限的组合式控制,因可配置的权限管理类别更多,通用性更强、代码管控成本更低、权限管理更细致,能够满足更多软件开发场景的需要。
[0063]
3、当权限变化时,管理员只需要在权限控制规则集合中增加新的规则即可,无需增加新的逻辑控制代码,加快了权限功能生效时间。
附图说明
[0064]
图1为用于大型软件的权限组织结构图;
[0065]
图2为本发明的权限管理的流程图。
具体实施方式
[0066]
下面结合附图进一步说明本发明的技术方案。本实施例以实现“家长查询自己子女成绩”功能页面为例,基于java语言的jfinal开发框架实现,前端渲染框架为freemarker,数据库为mysql。
[0067]
本发明的一种用于大型软件的权限组织结构,由数据集合和数据关系组成,如图1所示;
[0068]
所述数据集合包括用户集合、用户组集合、功能集合、菜单集合、业务数据集合、数据权限元组集合、状态标示集合、权限控制规则集合和会话数据集合,分别用s1~s9表示;
[0069]
所述数据关系包括用户与用户组关系、用户组集合关系、功能权限关系、菜单功能隶属关系、菜单功能对应关系、数据模型与功能对应关系、数据状态映射关系、数据状态与权限关系和会话用户与权限关系,分别用r1~r9表示。
[0070]
所述数据集合分别定义如下:
[0071]
s1、用户集合:存储了有权限使用本软件的用户,该集合中至少包含用户的唯一标识或id;本实施例中s1表示为{[“家长甲”,“userid123”]},该数据集合代表一位家长用户(大括号表示集合,中括号表示一条数据,字段数据值用逗号分割,后文均采用这种表述方式)。
[0072]
s2、用户组集合:存储了软件系统中用户可被分配的所有用户组,该集合中至少包含用户组的唯一标识或id;本实施例中s2表示为{[“三年二班家长组”,“groupid123”]}。
[0073]
s3、功能集合:存储了软件系统中的所有运行的功能,该集合可以用功能的id、功能英文名、功能路径等唯一性的数据来表示;本实施例中s3表示为{[“子女成绩查询功能”,“functionid123”,“path:score/child”]},该数据集合代表了子女成绩查询功能。
[0074]
s4、菜单集合:存储了软件系统中所有存在权限变化的菜单元素,该集合中至少包含菜单的唯一标识或id;本实施例中s4表示为{[“菜单:打印成绩”,“menuid41”,“goto:functionid516”,“locate:functionid123”],[“菜单:修改成绩”,“menuid42”,“goto:functionid517”,“locate:functionid123”]},该数据集合代表了2个菜单,一个对应的功
能为打印成绩,另一个对应的功能为修改成绩。
[0075]
s5、业务数据集合:存储的是软件的业务数据,如电商系统的订单、支付等等,该集合可分为多个子集合实现,须至少包含数据的唯一性id,id生成形式不限;本实施例中s5表示为{[“studentid1”,“语文”,“96分”,“2019学年”,“userid123”,“auth_data”],[“studentid1”,“语文”,“85分”,“2020学年”,“userid123”,“auth_data”],[“studentid1“,“数据文”,“87分”,“2020学年”,“userid123”,“auth_data”]},该数据集合代表了业务数据集合中有3条studentid1学生的不同时期的语文或数学成绩。需要特别指出的是,该示例数据中auth_data即为数据权限元组。
[0076]
s6、数据权限元组集合:业务数据集合的横向子集合,即业务数据集合中每条数据都应包含数据权限元组,该数据权限元组包含:数据生成时间、数据最近更新时间、数据状态、数据创建人;本实施例中s6是auth_data,对应s5中,分别为{“type1”,“creator:userteacher1”,“state-0”,“2019-10-01”},{“type1”,“creator:userteacher1”,“state-0”,“2020-10-01”},{“type1”,“creator:userteacher1”,“state-1”,“2020-10-01”}。此处每条数据中包含的4个元组字段是数据类别、创建者、数据状态、数据生成日期。
[0077]
s7、状态标示集合:软件系统中所有数据状态的解释内容集合;本实施例中s7表示为{[“state-0:已发布”],[“state-1”:未发布]},代表了对s6中两种状态的解释。
[0078]
s8、权限控制规则集合:存储的是权限控制规则,该集合的每一项均代表一个权限规则,每一项规则中定义了用户组标识、功能标识、业务数据来源标识、数据状态标识,以及规则界定标识(允许或禁止);本实施例中s8表示为{[“groupid123”,“functionid123”,“2020-10-02”,“enable”,“state-0”],[“groupid123”,“functionid517”,“2020-10-02”,“disable”]}为2条规则示例,表示了groupid123用户组在某个日期内在访问查询成绩或修改成绩时,是否具有权限。
[0079]
s9、会话数据集合:该集合包含了系统中正处于登录状态用户的基本信息,如用户id、用户类别id、用户分组id、用户启动状态等;本实施例中s9表示为{“userid123”,“家长甲”,“groupid123”},表示了当前登录用户家长甲的相关帐号信息。
[0080]
在构建好数据结构集合后,还应确定关系集合;所述关系集合分别定义如下:
[0081]
r1、用户与用户组关系:表示用户属于的用户组,同一用户允许属于多个用户组;
[0082]
r2、用户组集合关系:表示用户组存在于哪些权限规则中;
[0083]
r3、功能权限关系:表示软件中的不同功能点存在于哪些权限规则中;
[0084]
r4、菜单功能隶属关系:表示某个菜单在权限满足时,是否会以特定的位置和视觉形态出现有功能点中;
[0085]
r5、菜单功能对应关系:表示某个菜单在执行时所对应的功能点;
[0086]
r6、数据模型与功能对应关系:表示某个业务数据集在权限满足时,是否在某个功能点中被用到;
[0087]
r7、数据状态映射关系:表示某个业务数据集中数据状态所对应的状态含义;
[0088]
r8、数据状态与权限关系:表示某个业务数据集是否受权限规则表的控制;
[0089]
r9、会话用户与权限关系:表示了当前登录的用户的哪些权限规则是生效的。
[0090]
以上关系通过在对应的集合中增加另一关系对象的唯一性标识的方式来实现。
[0091]
此外,对于r1~r9的关系存储实现,它们代表s1~s9集合两两集合对象的关联关
系,如用户id对应用户组id(<userid,groupid>形式),可以使用单独的数据库表存储来实现。两两集合对象的关系表是普通技术人员都能理解的数据库表设计,此处不做特定描述。
[0092]
以上数据结构和关系以集合为特征,并保存有各个集合间的关系,在具体实现中包括但不限于xml配置文件、json文件、数据库、字典库,也可以是自己定义的其他数据形式,可由技术人员根据需要自行决定。
[0093]
以上构建结构的优势在于:当用户、用户组、功能等软件对象变化时,可直接在数据集合中增加相应数据,而无需重新在代码中编写新权限规则,且可以较低成本地迁移到其它软件系统。以上的集合与关系包含了大部分软件在权限管理与分配上的可变点。本发明可实现功能权限、菜单权限、数据对象权限的通用化管理。下文将结合权限处理与控制方法来进一步说明本发明的工作原理。
[0094]
如图2所示,本发明的一种用于大型软件的权限管理方法包括以下步骤:
[0095]
p1、进入权限管理功能,为权限检查准备必要数据,如用户的登录会话数据、当前功能的名称或id等;将s9集合中的会话数据,从内存中的公共区域载入该程序模块;
[0096]
p2、检查功能权限:检查当前登录的用户是否能访问用户请求访问的功能;
[0097]
具体包括以下子步骤:
[0098]
p21、根据用户与用户组关系获得当前登录用户的用户组;
[0099]
p22、在权限控制规则集合中找到对应的规则;
[0100]
p23、若无规则或规则允许,即返回true并跳至步骤p3;若有规则且规则为禁止,返回false并跳至步骤p5。
[0101]
找到家长甲的用户组id为groupid123,在s8数据集合中找到2条对应的权限规则,判断出功能该用户组访问功能functionid123的规则为enable(允许)。继续执行p3。
[0102]
p3、载入菜单及权限数据:找出用户请求访问的功能涉及的菜单并完成权限判断;具体包括以下子步骤:
[0103]
p31、判断用户请求访问的功能是否存在用户界面;
[0104]
p32、若用户请求访问的功能是否存在用户界面,则根据菜单功能隶属关系查找该功能所包含的菜单;
[0105]
根据包含的菜单,通过对菜单功能对应关系、会话用户与权限关系与权限控制规则集合的逐级查找(逐级查找是指通过集合或关系数据中的相同id完成a

b

c的查找过程,下文步骤p4中也将用该方法在多集合或关系数据中进行查询);判断所包含的菜单是否应该出现在该功能中的特定位置,若是则在已准备好的菜单数据中增加标注为true,否则为false。
[0106]
本实施例的功能是查询子女成绩,是带界面的功能,通过r4找到界面上具有2个菜单:打印成绩、修改成绩。通过r5、r9关系与s8集合判断,该家长所在用户组,不允许访问functionid517,即家长不允许修改成绩。那么在载入的菜单数据用,对修改成绩的菜单标注为false,而只对打印成绩的菜单标注为true。
[0107]
p4、处理数据:处理用户请求访问的功能对数据的操作,通过对数据库的查询语句的生成、构造,实现更细致的权限控制;本实施例采用sql语句构造,根据该功能的需要先构造基本查询语句:select*from t_student_score where。
[0108]
具体包括以下子步骤:
[0109]
p41、处理数据类别权限:根据数据模型与功能对应关系、数据权限元组集合、功能集合、权限控制规则集合判断该数据的特定类别是否应该在该功能中进行业务数据准备;若具备该权限,在sql查询语句的where子语句中增加对应条件;本实施例根据r6、s6、s3、s8判断,s8中无相关权限规则,无需增加数据类别判断。
[0110]
p42、处理数据所属权限:根据会话用户与权限关系、数据模型与功能对应关系、数据权限元组集合、功能集合判断该数据在创建者所属关系上,是否应该在该功能中进行业务数据准备;若具备该权限,在sql查询语句的where子语句中增加对应条件;根据r9、r6、s6、s3判断,成绩虽由老师给出,但没有权限规则在s8中给出,无需增加所属权限判断。
[0111]
p43、处理数据状态权限:根据数据模型与功能对应关系、数据权限元组集合、功能集合、权限控制规则集合判断该数据在某个状态上,是否应该在该功能中进行业务数据准备;若具备该权限,在sql查询语句的where子语句中增加对应条件;根据r6、s6、s3、s8判断,权限中限能查看state-0的,sql查询增加条件:state=state-0,即家长只能查看已发布的成绩。
[0112]
p44、处理数据时效权限:根据数据模型与功能对应关系、数据权限元组集合、数据状态与权限关系、权限控制规则集合判断该数据在当前时间点,是否应该在该功能中进行业务数据准备;若具备该权限,在sql查询语句的where子语句中增加对应条件;根据r6、s6、r8、s8判断,sql查询增加条件:adddate>=2020-10-01。即往年成绩不可见。
[0113]
p45、查询语句构造:根据该功能的原始的业务sql查询语句进行进一步的构建;将p41~p43所准备的where子语句逐一与原始的业务sql查询语句进行组合,并保证语法正确。
[0114]
p46、数据增/改/查:将最终的sql查询语句发送至数据库,获得与该功能对应的数据内容;该过程执行后,若该功能无功能界面,进入p7,若有用户界面先进入p6。
[0115]
p5、返回功能权限不够的信息:若整个权限检查过程在p2阶段未获得通过,则执行本步骤,将访问的功能点、当前会话信息、权限不够的原因信息返回给用户;否则直接执行步骤s6;本实施例例中权限满足,因此不作返回,直接执行步骤p6。
[0116]
p6、渲染功能页面:将具备权限的元素依次渲染在界面上;具体包括以下子步骤:
[0117]
p61、显示与该功能对应的页面基础模板;
[0118]
p62、检查已准备好的菜单数据,将标记为true的菜单显示在指定页面区域;
[0119]
p63、将经过权限过滤的业务数据显示有页面上,根据html渲染页面,在渲染菜单时,对标记为false的进行跳过,最后将sql查询得到的子女成绩数据显示在页面上。
[0120]
p7:退出或进入新功能:当无用户界面的功能执行完成后,退出整个过程,当有用户界面的功能执行完成后,即进入了新功能。本实施例的页面为用户交互界面,在该页面停留直到用户进行下一次操作。
[0121]
进一步地,所述步骤p2、p3和所有p4中,权限判断方法为:若权限控制规则集合中有多条同一条件下的权限规则,在允许和禁止规则小于或等于2条时,采用最近规则判断;否则,为防止规则冲突和错误的允许或禁止,采用最近规则均衡决断的算法进行判断:
[0122]
[0123]
b的值为布尔值,当b=1时,认为权限允许,当b=0时认为权限禁止;
[0124]
其中,d

n
代表最近一条规则为允许的日期,d

n-1
代表距最近一条允许的日期最近的一条允许的日期;n
true
代表最近允许的规则数量;d
n
代表最近一条规则为禁止的日期,d
n-1
代表距最近一次禁止的日期最近的一条禁止规则的日期;n
false
代表最近禁止的规则数量;各设置禁止或允许的规则的时间点,两两计算求和后再进行大小判断,最后得到b值。
[0125]
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1