CN114546563A - 一种多租户页面访问控制方法和系统 - Google Patents
一种多租户页面访问控制方法和系统 Download PDFInfo
- Publication number
- CN114546563A CN114546563A CN202210170855.3A CN202210170855A CN114546563A CN 114546563 A CN114546563 A CN 114546563A CN 202210170855 A CN202210170855 A CN 202210170855A CN 114546563 A CN114546563 A CN 114546563A
- Authority
- CN
- China
- Prior art keywords
- page
- resource
- tenant
- button
- resources
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种多租户页面访问控制方法和系统,属于页面控制技术领域,解决了现有技术中多租户页面的访问和分级权限控制不灵活的问题。包括解析控制器类及其各方法的注解,分别获取新增和变更的各租户页面资源及其按钮资源,并建立初始的各租户页面嵌套关系;根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别;根据最新各租户页面嵌套关系和访问级别,获取各租户对应的待授权信息,建立页面资源及其按钮资源分别与选择的待授权信息的关联关系;获取登录用户所属的租户和权限,根据租户的页面嵌套关系和关联关系,显示登录用户访问的页面及其按钮。实现了多租户页面动态嵌套和访问级别的控制。
Description
技术领域
本发明涉及页面控制技术领域,尤其涉及一种多租户页面访问控制方法和系统。
背景技术
随着集团企业全级次管理的深入展开,集团内各单位的不同管理流程及业务属性都需要在集团中进行各要素信息管控,因此需要合理搭建集团系统框架,在管控各单位信息的同时,兼顾各单位差异化管理流程和业务。
如果各单位定制开发各自的系统,再通过集成平台进行集成和统一,实施成本较高,如果由集团统一构建,又很难满足各单位个性化需求。
对于无需进行大量运算,性能要求不高的情况下,通过多租户技术可以在实现数据隔离的同时使多个单位共用一个应用程序或运行环境。但是对于各单位在某些业务需求中个性化的页面,通常还是各自开发,增加了开发工作量,集团权限配置人员也需要增加更多的权限配置使不同租户可以访问不同页面。一旦需求变更,也需要开发人员开发出新的页面,无法实现页面的动态组合。
发明内容
鉴于上述的分析,本发明实施例旨在提供一种多租户页面访问控制方法和系统,用以解决现有多租户页面的访问和分级权限控制不灵活的问题。
一方面,本发明实施例提供了一种多租户页面访问控制方法,包括如下步骤:
解析控制器类及其各方法的注解,分别获取新增和变更的各租户页面资源及其按钮资源,并建立初始的各租户页面嵌套关系;
根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别;根据最新各租户页面嵌套关系和访问级别,获取各租户对应的待授权信息,建立页面资源及其按钮资源分别与选择的待授权信息的关联关系;
获取登录用户所属的租户和权限,根据租户的页面嵌套关系和关联关系,显示登录用户访问的页面及其按钮。
基于上述方法的进一步改进,控制器类中各方法的注解属性包括:租户ID、路径标识、资源名称、操作标识、资源类型、父级访问路径和访问级别;其中,资源类型分为页面资源和按钮资源,页面资源包括公共页面和私有页面;按钮资源包括按钮;访问级别包括:系统级别、租户级别、业务级别和用户级别。
基于上述方法的进一步改进,解析控制器类及其各方法的注解,获取新增和变更的各租户页面资源及其按钮资源,包括:
系统服务启动时,获取指定名称的文件夹下所有类名,根据控制器类的命名规则,从所有类名中筛选出控制器类;
根据Method类,获取每个控制器类中的方法,再针对每个控制器类及其各方法,获取指定的类注解属性和方法注解属性;
根据方法注解属性中的资源类型,将对应的方法注解属性封装为页面资源对象或按钮资源对象;
将类注解属性中路径标识与各方法注解属性中的路径标识分别进行拼接,作为各方法对应的页面资源对象或按钮资源对象的访问路径;根据访问路径,识别对应的页面资源信息表或按钮资源信息表中是否已存在记录,若不存在,将页面资源对象或按钮资源对象新增至对应的页面资源信息表或按钮资源信息表中,生成唯一的页面ID或按钮ID;若已存在,比对页面资源对象或按钮资源对象与对应的页面资源信息表或按钮资源信息表中记录是否发生变更,将变更的页面资源对象或按钮资源对象新增至页面资源对象临时表或按钮资源临时表中。
基于上述方法的进一步改进,根据方法注解属性中的资源类型,将对应的方法注解属性封装为页面资源对象或按钮资源对象,包括:
如果方法注解属性中资源类型为公共页面,则根据方法注解属性封装为页面资源对象;
如果方法注解属性中资源类型为私有页面,且方法注解属性中存在父级访问路径,则从页面资源信息表中获取对应的页面ID作为父级页面ID,建立初始的当前租户中私有页面与父级页面的嵌套关系;否则,父级页面ID置为空,根据父级页面ID和方法注解属性封装为页面资源对象;
如果方法注解属性中资源类型为按钮,则根据方法注解属性封装为按钮资源对象,并作为当前控制器类中页面资源对象的子对象
基于上述方法的进一步改进,根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别,包括:
系统服务启动后,在资源配置界面,获取页面资源信息表中新增数据和页面资源临时表中的页面资源信息,对资源类型为私有页面的页面资源,根据选择的公共页面,更新当前租户的页面嵌套关系;
根据页面资源对象临时表或按钮资源临时表,获取变更的页面资源和按钮资源,对页面或按钮的访问级别发生变更的记录确定是否更新,如果确定更新,删除原访问级别与选择的待授权信息的关联关系,按照新的访问级别更新对应的页面资源信息表或按钮资源信息表。
基于上述方法的进一步改进,根据最新各租户页面嵌套关系和访问级别,获取各租户对应的待授权信息,包括:
根据最新各租户页面嵌套关系,获取不存在页面嵌套关系的页面资源和按钮资源,作为待授权资源;
如果待授权资源的访问级别为系统级别或为空,则各租户均具备访问权限,无需授权;
如果待授权资源的访问级别为租户级别,则根据租户ID,获取该租户的组织机构信息,作为待授权信息;
如果待授权资源的访问级别为业务级别,则根据租户ID,获取该租户的角色信息,作为待授权信息;
如果待授权资源的访问级别为用户级别,则根据租户ID,获取该租户的用户信息,作为待授权信息。
基于上述方法的进一步改进,根据租户的页面嵌套关系和关联关系,显示登录用户访问的页面及其按钮,包括:
根据登录用户访问的页面,获取对应的页面ID、资源类型,如果资源类型是公共页面,则将页面ID作为父级页面ID,在页面资源信息表中查询父级页面下租户的子页面,如果查询出子页面,则关联查询出子页面对应的按钮资源,根据子页面的数量,在父级页面中通过不同的控件嵌套展示出子页面,并根据登录用户的权限,显示子页面中登录用户有权限访问的按钮;
如果未查询出子页面,则根据登录用户访问的页面的页面路径和登录用户的权限,显示对应页面及登录用户有权限访问的按钮。
另一方面,本发明实施例提供了一种多租户页面访问控制系统,包括:
租户管理模块,用于注册租户信息,管理各租户的组织机构、角色和用户信息;
资源初始化模块,用于解析控制器类及其各方法的注解,分别获取新增和变更的各租户页面资源及其按钮资源,并建立初始的各租户页面嵌套关系;
资源配置模块,根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别;
资源授权模块,根据最新的各租户页面嵌套关系和访问级别,获取各租户的待授权信息,建立页面资源及其按钮资源分别与选择的待授权信息的关联关系;
资源识别模块,获取登录用户的租户和权限,根据租户的页面嵌套关系和关联关系,显示登录用户访问的页面及其按钮。
基于上述系统的进一步改进,资源初始化模块在服务启动时被调用,并执行以下操作:
获取指定名称的文件夹下所有类名,根据控制器类的命名规则,从所有类名中筛选出控制器类;
根据Method类,获取每个控制器类中的方法,再针对每个控制器类及其各方法,获取指定的类注解属性和方法注解属性;
根据方法注解属性中的资源类型,将对应的方法注解属性封装为页面资源对象或按钮资源对象;
将类注解属性中路径标识与各方法注解属性中的路径标识分别进行拼接,作为各方法对应的页面资源对象或按钮资源对象的访问路径;根据访问路径,识别对应的页面资源信息表或按钮资源信息表中是否已存在记录,若不存在,将页面资源对象或按钮资源对象新增至对应的页面资源信息表或按钮资源信息表中,生成唯一的页面ID或按钮ID;若已存在,比对页面资源对象或按钮资源对象与对应的页面资源信息表或按钮资源信息表中记录是否发生变更,将变更的页面资源对象或按钮资源对象新增至页面资源对象临时表或按钮资源临时表中。
基于上述系统的进一步改进,资源识别模块在显示登录用户访问的页面及其按钮时,执行以下操作:
根据登录用户访问的页面,获取对应的页面ID、资源类型,如果资源类型是公共页面,则将页面ID作为父级页面ID,在页面资源信息表中查询父级页面下租户的子页面,如果查询出子页面,则关联查询出子页面对应的按钮资源,根据子页面的数量,在父级页面中通过不同的控件展示出子页面,并根据登录用户的权限,显示子页面中登录用户有权限访问的按钮;
如果未查询出子页面,则根据登录用户访问的页面的页面路径和登录用户的权限,显示对应页面及登录用户有权限访问的按钮。
与现有技术相比,本发明至少可实现如下有益效果之一:
1、以业务功能为单元,将业务功能中的页面及按钮的操作与控制器类中的方法对应,自定义注解对象和属性,自动初始化页面资源和按钮资源,减少人工整理和配置工作;
2、根据注解属性中的资源类型和父级页面ID,建立公共页面与不同租户私有页面的关联,在访问公共页面时自动展示关联的租户页面,无需调整页面访问路径和页面访问权限,减少了集团权限配置工作,提高了灵活控制能力;
3、对页面和按钮资源增加访问级别,实现访问权限的范围控制,提高权限配置效率,减少错误率。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例1中一种多租户页面访问控制方法流程图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
实施例1,
本发明的一个具体实施例,公开了一种多租户页面访问控制方法,该方法适用于集团与各单位的多租户共存模式,通过合理的开发模式与动态识别相结合,实现对多租户系统资源的访问控制,如图1所示,包括如下步骤:
S10:通过自定义注解对象,在控制器类的各方法中描述前端页面资源和按钮资源。
目前比较流行的Java开发框架,比如Spring Boot,用户在前端界面通过按钮、超链接等人为触发每个功能操作,会提交到控制层(Controller层)来响应用户请求,并通过控制层中控制器类中的方法调用业务接口类进行数据处理或数据获取,再跳转至页面。
本实施例在开发各租户业务功能时,以业务功能为单元,每个业务功能的入口页面及页面中所包含的按钮和点击操作,均对应控制器类中的1个方法,不再直接打开一个前端界面;控制器类中包括至少1个方法。
示例性地,在合同管理功能模块中,合同信息的列表页面是入口页面,在入口页面中提供合同的新增、修改、查看、删除、导入和导出功能,则对应该功能模块创建1个合同管理控制器类ContratController,其中包括以下方法:根据查询条件获取列表queryContractList、打开新增合同页面goInsertContract、保存新增合同信息insertContractInfo、打开修改合同页面goEditContract、保存修改合同信息editContractInfo、打开查看合同页面goGetContract、删除合同信息deleteContractInfos、导入合同信息uploadContractInfos和导出合同信息exportContractInfos。
考虑到开发阶段,每个开发人员对自己所负责的功能需求比较清楚,合理利用注解就可以在开发的同时将后端方法对应的前端业务资源描述出来,建立初始的前端页面中页面与页面,页面与按钮的关联关系,从而减少后期人工整理和配置工作。
需要说明的是,只需对需要进行权限控制的按钮增加自定义注解,其他无需权限控制的按钮,可以不进行按钮资源管理。比如,在合同管理的列表页面中,只需控制打开新增合同页面和修改合同页面的按钮权限即可,新增合同页面和修改合同页面中的保存按钮操作就无需进行权限控制,那么保存新增合同信息的方法和保存修改合同信息的方法上无需增加自定义注解。
具体来说,自定义注解对象ResAuto,用于配置控制器类中各方法的注解属性,包括:租户ID tid、路径标识mUrl、资源名称resName、操作标识funId、资源类型resType、父级访问路径pUrl和访问级别resLevel;其中,资源类型分为页面资源和按钮资源,页面资源包括公共页面commonPage和私有页面privatePage;按钮资源包括按钮button;访问级别包括:系统级别sys、租户级别tenant、业务级别busirole和用户级别user。
需要说明的是,路径标识与缺省注解中@RequestMapping、@PostMapping或@GetMapping注解类似,用于配置方法的请求路径标识,在解析时会自动在方法的路径标识前拼接上所属控制器类的请求路径标识;
父级访问路径,用于建立当前方法跳转的页面与父级访问路径对应的页面的从属关系,即建立各租户私有页面与公共页面嵌套关系,需要写明显示父级页面的完整的控制器类和方法拼接的访问路径;
资源类型,用于区分业务功能中的私有页面资源、公共页面资源和按钮资源,其中私有页面资源是所属租户的个性化页面,一般是租户内用户访问,公共页面是集团内各租户都能访问的页面,一般将各租户的公共业务属性显示在公共页面中,再嵌套各租户的1个或多个私有页面,当各租户用户访问公共页面时,对应显示嵌套的租户私有页面。示例性地,集团强制管控字段包括合同名称、合同金额、合同属性、价格确定依据、预计收付款节点信息,则可以通过把这些业务属性统一定制在公共页面中便于所有租户访问,A单位还需要显示合同来源、供应商信息,则可以在A单位的合同列表私有页面中显示。
访问级别,用于根据实际情况对页面和按钮的访问权限进行分级控制,提高页面访问控制的灵活性,做到不仅能够控制某些租户访问某些页面,同时能够通过访问级别按照租户内部组织、角色、人员等维度控制页面访问权限。
示例性地,集团中A单位对应的租户是a,合同管理控制器类ContratController的注解是@RequestMapping(”/contract”),根据查询条件获取列表queryContractList方法上的自定义注解是:@ResAuto(tid=”a”,mUrl=”contractlist”,resName=”合同列表”,funId=”query”,resType=”privatePage”,pUrl=”/conmgr/conlist”),即表示A单位的合同列表页面是A单位内部的私有页面,其完整的访问路径是/contract/contractlist,嵌套显示在集团/conmgr/conlist操作对应的页面中。
优选地,每个控制器类中仅有1个方法对应业务功能的入口页面,该方法为公共页面资源或私有页面资源,其他均为按钮资源且与页面资源关联。另外,根据实际业务需求,若控制器类中不止1个方法是页面资源,则可在方法注解对象中增加属性,定义按钮资源归属的页面资源。
S11:解析控制器类及其各方法的注解,分别获取新增和变更的各租户页面资源及其按钮资源,并建立初始的各租户页面嵌套关系;
优选地,对步骤S10中控制器类及其各方法的注解,调用资源初始化方法在系统服务启动时自动解析注解,保存资源。
示例性的,在资源初始化方法上增加@PostConstruct注解,实现在项目启动过程中直接执行该方法。
具体来说,资源初始化方法的解析和保存步骤包括:
①获取指定名称的文件夹下所有类名,根据控制器类的命名规则,从所有类名中筛选出控制器类;
需要说明的是,指定名称的文件夹指包括业务功能对应的控制器类的文件夹,在进行相应业务功能时,通过获取指定名称的文件夹下的所有类名,得到业务功能对应的所有控制器类。
具体来说,指定名称的文件夹所属的路径可以统一,也可以归属于各功能模块的目录下。示例性地,指定名称的文件夹是controller,则每个业务功能的控制器类可以统一创建在同一个目录下,比如com/company/common/controller目录下,类的命名统一以Controller为后缀,这样可以减少遍历,高效获取到所有控制器类;也可以在功能模块的目录中创建controller文件夹,比如合同管理的控制器类完整路径是com/company/contractmgr/controller,项目管理的控制器类完整路径是com/company/projectmgr/controller,通过与开发规范对应,遍历获取路径中包含指定名称文件夹的控制器类。
②根据Method类,获取每个控制器类中的方法,再针对每个控制器类及其各方法,获取指定的类注解属性和方法注解属性;
需要说明的是,指定的类注解属性用于与开发规范对应,获取控制器类的请求路径标识,比如通过获取@RequestMapping的值获取到控制器类的请求路径标识;指定的方法注解属性用于封装页面资源和按钮资源,包括自定义注解属性或缺省的注解属性。
③根据方法注解属性中的资源类型,将对应的方法注解属性封装为页面资源对象或按钮资源对象;
具体来说,如果方法注解属性中资源类型为公共页面,则根据方法注解属性封装为页面资源对象;
如果方法注解属性中资源类型为私有页面,且方法注解属性中存在父级访问路径,则从页面资源信息表中获取对应的页面ID作为父级页面ID,建立初始的当前租户中私有页面与父级页面的嵌套关系;否则,父级页面ID置为空,根据父级页面ID和方法注解属性封装为页面资源对象;
需要说明的是,如果在开发阶段,因写错父级访问路径而无法获取父级页面ID,在服务启动后,资源配置人员可通过资源配置功能重新选择绑定。
如果方法注解属性中资源类型为按钮,则根据方法注解属性封装为按钮资源对象,并作为当前控制器类中页面资源对象的子对象。
需要说明的是,页面资源对象中包括按钮资源对象的对象数组属性,用于将1个控制器类中设置有自定义注解的按钮资源对象统一设置为页面资源对象的子对象,便于以级联保存的方式同时保存页面资源对象及其按钮资源对象,并在按钮资源表中自动关联页面资源对象保存后的页面ID。
与现有技术相比,无需人工配置各页面中需要权限控制的按钮,在自动识别出页面资源的同时,就可绑定页面中关联的按钮操作,提高了资源配置效率。
④将类注解属性中路径标识与各方法注解属性中的路径标识分别进行拼接,作为各方法对应的页面资源对象或按钮资源对象的访问路径;根据访问路径,识别对应的页面资源信息表或按钮资源信息表中是否已存在记录,若不存在,将页面资源对象或按钮资源对象新增至对应的页面资源信息表或按钮资源信息表中,生成唯一的页面ID或按钮ID;若已存在,比对页面资源对象或按钮资源对象与对应的页面资源信息表或按钮资源信息表中记录是否发生变更,将变更的页面资源对象或按钮资源对象新增至页面资源对象临时表或按钮资源临时表中。
需要说明的是,页面资源信息表用于存储系统中可进行权限控制的页面资源信息,包括:页面ID、页面资源名称、页面资源类型、页面访问级别、页面访问路径和父级页面访问路径;按钮资源信息表用于存储每个页面中可进行权限控制的按钮信息,包括:按钮ID、页面ID、按钮资源名称、按钮访问级别、按钮访问路径。
页面资源临时表用于存储与页面资源信息表中已存信息不一致的页面资源信息,按钮资源临时表用于存储与按钮资源信息表中已存信息不一致的按钮资源信息,临时表的表结构不做限制,可与页面资源信息表和按钮资源信息表的表结构一致,也可以将通过注解封装的与表中已存信息不一致的页面资源和按钮资源封装为Json格式的字符串进行存储。
需要说明的是,通过注解得到的页面资源和按钮资源,用于初始化系统资源,初步建立页面间的嵌套关系、页面资源和按钮资源的关联关系以及页面资源和按钮资源的访问级别。后期根据业务需求的变更,资源配置人员可通过界面端进行调整变更或新增,因此每次启动服务解析注解时,会出现部分代码注解属性与表中实际存储信息不一致的情况,本实施例中将此部分识别出来,便于资源配置人员根据实际情况选择是否更新,既可自动识别出变更信息,又可自主掌控,随需而变。
S12:根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别;根据最新的访问级别,获取各租户对应的待授权信息,建立页面资源及其按钮资源分别与选择的待授权信息的关联关系;
需要说明的是,在系统服务启动后,通过资源配置界面更新各租户页面嵌套关系和访问级别,包括:
①获取页面资源信息表中新增数据和页面资源临时表中的页面资源信息,对资源类型为私有页面的页面资源,根据选择的公共页面,更新当前租户的页面嵌套关系;
具体来说,获取页面资源信息表中资源类型为公共页面或私有页面的页面信息,对其中新增数据,以及新增数据中设置了父级访问路径,但未绑定父级页面ID的记录可以标注出来,便于用户调整。调整时,从资源类型为公共页面的页面资源列表中,根据用户的选择,更新父级访问路径和父级页面ID,建立正确的页面嵌套关系。
基于页面资源临时表和页面资源信息表,将父级访问路径不一致的页面资源信息对比显示出来;当接收到更新请求,则根据页面资源临时表中的父级访问路径获取到父级页面ID后,更新页面资源信息表中的原记录。
对已存在的记录,也可以根据实际需求调整关联的父级公共页面。
通过调整页面嵌套关系,实现集团页面与各租户页面的动态组合,减少了开发工作量,提高了灵活控制能力。
②根据页面资源对象临时表或按钮资源临时表,获取变更的页面资源和按钮资源,对页面或按钮的访问级别发生变更的记录确定是否更新,如果确定更新,删除原访问级别与选择的待授权信息的关联关系,按照新的访问级别更新对应的页面资源信息表或按钮资源信息表。
优选地,用户在确认完变更的各租户页面资源及其按钮资源后,对无需更新的资源通过全部忽略操作,清空临时表中的记录。
需要说明的是,通过访问级别控制页面和按钮资源访问权限的范围。当租户的私有页面与公共页面嵌套时,私有页面的页面权限与关联的公共页面的页面权限一致,直接对公共页面授权即可,无需设置私有页面的页面权限,但私有页面中的按钮权限可通过访问级别进行分级权限设置。
访问级别包括系统级别、租户级别、业务级别和用户级别,其中,系统级别用于定义公共功能页面和不涉及更新操作的按钮;租户级别用于定义租户或租户内各部门个性化的页面和按钮;业务级别用于定义业务专家可操作的页面和按钮;用户级别用于定义特定用户独有的页面和可操作的按钮。
具体来说,根据最新各租户页面嵌套关系,获取不存在页面嵌套关系的页面资源和按钮资源,作为待授权资源;根据访问级别获取待授权信息用于对页面资源和按钮资源进行分级权限控制;
如果待授权资源的访问级别为系统级别或为空,则各租户均具备访问权限,无需授权;
如果待授权资源的访问级别为租户级别,则根据租户ID,获取该租户的组织机构信息,作为待授权信息;
如果待授权资源的访问级别为业务级别,则根据租户ID,获取该租户的角色信息,作为待授权信息;
如果待授权资源的访问级别为用户级别,则根据租户ID,获取该租户的用户信息,作为待授权信息。
现有技术中,对页面或按钮可同时选择组织机构、角色或用户进行授权,重复授权率高,权限识别复杂。相比现有技术,本实施例中针对每个页面资源和按钮资源增加设置各租户分级控制,根据访问级别获取待授权信息,明确授权范围,便于快速选择,不容易出现授权错误。
S13:获取登录用户所属的租户和权限,根据租户的页面嵌套关系和关联关系,显示登录用户访问的页面及其按钮。
需要说明的是,当用户访问系统时,系统会自动根据用户登录信息获取到用户所属租户、组织、角色和可访问的菜单权限信息,并将这些信息以对象的方式存入session或缓存中,每当用户访问某个菜单,根据菜单的访问路径就可以定位到对应的页面资源,从而获取页面的嵌套关系以及页面中按钮与权限的关联关系,与用户的权限进行匹配后,展示出页面和按钮。
具体来说,根据租户的页面嵌套关系和权限关联关系,显示登录用户访问的页面及其按钮,包括:
根据登录用户访问的页面,获取对应的页面ID、资源类型,如果资源类型是公共页面,则将页面ID作为父级页面ID,在页面资源信息表中查询父级页面下租户的子页面,如果查询出子页面,则关联查询出子页面对应的按钮资源,根据子页面的数量,在父级页面中通过不同的控件嵌套展示出子页面,并根据登录用户的权限,显示子页面中登录用户有权限访问的按钮;
如果未查询出子页面,则根据登录用户访问的页面的页面路径和登录用户的权限,显示对应页面及登录用户有权限访问的按钮。
与现有技术相比,本实施例提供的一种多租户页面访问控制方法,以业务功能为单元,将业务功能中的页面及按钮的操作与控制器类中的方法对应,自定义注解对象和属性,自动初始化页面资源和按钮资源,减少人工整理和配置工作;根据注解属性中的资源类型和父级页面ID,建立公共页面与不同租户私有页面的关联,在访问公共页面时自动展示关联的租户页面,无需调整页面访问路径和页面访问权限,减少了集团权限配置工作,提高了灵活控制能力;对页面和按钮资源增加访问级别,实现访问权限的范围控制,提高权限配置效率,减少错误率。
实施例2,
本发明的另一个实施例,公开了一种多租户页面访问控制系统,从而实现实施例1中页面访问控制方法。各模块的具体实现方式参照实施例1中的相应描述,该系统包括:租户管理模块、资源初始化模块、资源配置模块、资源授权模块和资源识别模块。其中,
租户管理模块,用于注册租户信息,管理各租户的组织机构、角色和用户信息;
资源初始化模块,用于解析控制器类及其各方法的注解,分别获取新增和变更的各租户页面资源及其按钮资源,并建立初始的各租户页面嵌套关系;
具体来说,资源初始化模块在服务启动时被调用,并执行以下操作:
获取指定名称的文件夹下所有类名,根据控制器类的命名规则,从所有类名中筛选出控制器类;
根据Method类,获取每个控制器类中的方法,再针对每个控制器类及其各方法,获取指定的类注解属性和方法注解属性;
根据方法注解属性中的资源类型,将对应的方法注解属性封装为页面资源对象或按钮资源对象;
将类注解属性中路径标识与各方法注解属性中的路径标识分别进行拼接,作为各方法对应的页面资源对象或按钮资源对象的访问路径;根据访问路径,识别对应的页面资源信息表或按钮资源信息表中是否已存在记录,若不存在,将页面资源对象或按钮资源对象新增至对应的页面资源信息表或按钮资源信息表中,生成唯一的页面ID或按钮ID;若已存在,比对页面资源对象或按钮资源对象与对应的页面资源信息表或按钮资源信息表中记录是否发生变更,将变更的页面资源对象或按钮资源对象新增至页面资源对象临时表或按钮资源临时表中。
资源配置模块,根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别;
资源授权模块,根据最新的各租户页面嵌套关系和访问级别,获取各租户的待授权信息,建立页面资源及其按钮资源分别与选择的待授权信息的关联关系;
资源识别模块,获取登录用户的租户和权限,根据租户的页面嵌套关系和关联关系,显示登录用户访问的页面及其按钮;
具体来说,资源识别模块在显示登录用户访问的页面及其按钮时,执行以下操作:
根据登录用户访问的页面,获取对应的页面ID、资源类型,如果资源类型是公共页面,则将页面ID作为父级页面ID,在页面资源信息表中查询父级页面下租户的子页面,如果查询出子页面,则关联查询出子页面对应的按钮资源,根据子页面的数量,在父级页面中通过不同的控件展示出子页面,并根据登录用户的权限,显示子页面中登录用户有权限访问的按钮;
如果未查询出子页面,则根据登录用户访问的页面的页面路径和登录用户的权限,显示对应页面及登录用户有权限访问的按钮。
与现有技术相比,本实施例提供的一种多租户页面访问控制系统,通过服务端初始化操作和在线界面配置功能,实现各租户私有页面与集团公共页面的动态嵌套,各页面及其按钮的动态生成和归属关联,减少了开发和整理工作量,避免配置遗漏和错误,提高交付效率;各租户通过页面和按钮的访问级别控制访问范围,实现精细化授权的同时提高权限配置效率,减少错误率。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种多租户页面访问控制方法,其特征在于,包括如下步骤:
解析控制器类及其各方法的注解,分别获取新增和变更的各租户页面资源及其按钮资源,并建立初始的各租户页面嵌套关系;
根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别;根据最新各租户页面嵌套关系和访问级别,获取各租户对应的待授权信息,建立页面资源及其按钮资源分别与选择的待授权信息的关联关系;
获取登录用户所属的租户和权限,根据所述租户的页面嵌套关系和所述关联关系,显示登录用户访问的页面及其按钮。
2.根据权利要求1所述的多租户页面访问控制方法,其特征在于,所述控制器类中各方法的注解属性包括:租户ID、路径标识、资源名称、操作标识、资源类型、父级访问路径和访问级别;其中,资源类型分为页面资源和按钮资源,页面资源包括公共页面和私有页面;按钮资源包括按钮;所述访问级别包括:系统级别、租户级别、业务级别和用户级别。
3.根据权利要求2所述的多租户页面访问控制方法,其特征在于,所述解析控制器类及其各方法的注解,获取新增和变更的各租户页面资源及其按钮资源,包括:
系统服务启动时,获取指定名称的文件夹下所有类名,根据控制器类的命名规则,从所述所有类名中筛选出控制器类;
根据Method类,获取每个控制器类中的方法,再针对每个控制器类及其各方法,获取指定的类注解属性和方法注解属性;
根据所述方法注解属性中的资源类型,将对应的方法注解属性封装为页面资源对象或按钮资源对象;
将所述类注解属性中路径标识与各方法注解属性中的路径标识分别进行拼接,作为各方法对应的页面资源对象或按钮资源对象的访问路径;根据所述访问路径,识别对应的页面资源信息表或按钮资源信息表中是否已存在记录,若不存在,将页面资源对象或按钮资源对象新增至对应的页面资源信息表或按钮资源信息表中,生成唯一的页面ID或按钮ID;若已存在,比对所述页面资源对象或按钮资源对象与对应的页面资源信息表或按钮资源信息表中记录是否发生变更,将变更的页面资源对象或按钮资源对象新增至页面资源对象临时表或按钮资源临时表中。
4.根据权利要求3所述的多租户页面访问控制方法,其特征在于,所述根据所述方法注解属性中的资源类型,将对应的方法注解属性封装为页面资源对象或按钮资源对象,包括:
如果方法注解属性中资源类型为公共页面,则根据所述方法注解属性封装为页面资源对象;
如果方法注解属性中资源类型为私有页面,且所述方法注解属性中存在父级访问路径,则从页面资源信息表中获取对应的页面ID作为父级页面ID,建立初始的当前租户中私有页面与父级页面的嵌套关系;否则,父级页面ID置为空,根据所述父级页面ID和所述方法注解属性封装为页面资源对象;
如果方法注解属性中资源类型为按钮,则根据所述方法注解属性封装为按钮资源对象,并作为当前控制器类中页面资源对象的子对象。
5.根据权利要求4所述的多租户页面访问控制方法,其特征在于,所述根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别,包括:
系统服务启动后,在资源配置界面,获取页面资源信息表中新增数据和页面资源临时表中的页面资源信息,对资源类型为私有页面的页面资源,根据选择的公共页面,更新当前租户的页面嵌套关系;
根据所述页面资源对象临时表或按钮资源临时表,获取变更的页面资源和按钮资源,对页面或按钮的访问级别发生变更的记录确定是否更新,如果确定更新,删除原访问级别与选择的待授权信息的关联关系,按照新的访问级别更新对应的页面资源信息表或按钮资源信息表。
6.根据权利要求5所述的多租户页面访问控制方法,其特征在于,所述根据最新各租户页面嵌套关系和访问级别,获取各租户对应的待授权信息,包括:
根据最新各租户页面嵌套关系,获取不存在页面嵌套关系的页面资源和按钮资源,作为待授权资源;
如果所述待授权资源的访问级别为系统级别或为空,则各租户均具备访问权限,无需授权;
如果所述待授权资源的访问级别为租户级别,则根据租户ID,获取该租户的组织机构信息,作为待授权信息;
如果所述待授权资源的访问级别为业务级别,则根据租户ID,获取该租户的角色信息,作为待授权信息;
如果所述待授权资源的访问级别为用户级别,则根据租户ID,获取该租户的用户信息,作为待授权信息。
7.根据权利要求6所述的多租户页面访问控制方法,其特征在于,所述根据所述租户的页面嵌套关系和所述关联关系,显示登录用户访问的页面及其按钮,包括:
根据登录用户访问的页面,获取对应的页面ID、资源类型,如果资源类型是公共页面,则将所述页面ID作为父级页面ID,在页面资源信息表中查询所述父级页面下所述租户的子页面,如果查询出子页面,则关联查询出所述子页面对应的按钮资源,根据子页面的数量,在父级页面中通过不同的控件嵌套展示出子页面,并根据登录用户的权限,显示子页面中所述登录用户有权限访问的按钮;
如果未查询出子页面,则根据登录用户访问的页面的页面路径和登录用户的权限,显示对应页面及所述登录用户有权限访问的按钮。
8.一种多租户页面访问控制系统,其特征在于,包括:
租户管理模块,用于注册租户信息,管理各租户的组织机构、角色和用户信息;
资源初始化模块,用于解析控制器类及其各方法的注解,分别获取新增和变更的各租户页面资源及其按钮资源,并建立初始的各租户页面嵌套关系;
资源配置模块,根据新增和变更的各租户页面资源及其按钮资源,更新各租户页面嵌套关系和访问级别;
资源授权模块,根据最新的各租户页面嵌套关系和访问级别,获取各租户的待授权信息,建立页面资源及其按钮资源分别与选择的待授权信息的关联关系;
资源识别模块,获取登录用户的租户和权限,根据所述租户的页面嵌套关系和所述关联关系,显示登录用户访问的页面及其按钮。
9.根据权利要求8所述的多租户页面访问控制系统,其特征在于,所述资源初始化模块在服务启动时被调用,并执行以下操作:
获取指定名称的文件夹下所有类名,根据控制器类的命名规则,从所述所有类名中筛选出控制器类;
根据Method类,获取每个控制器类中的方法,再针对每个控制器类及其各方法,获取指定的类注解属性和方法注解属性;
根据所述方法注解属性中的资源类型,将对应的方法注解属性封装为页面资源对象或按钮资源对象;
将所述类注解属性中路径标识与各方法注解属性中的路径标识分别进行拼接,作为各方法对应的页面资源对象或按钮资源对象的访问路径;根据所述访问路径,识别对应的页面资源信息表或按钮资源信息表中是否已存在记录,若不存在,将页面资源对象或按钮资源对象新增至对应的页面资源信息表或按钮资源信息表中,生成唯一的页面ID或按钮ID;若已存在,比对所述页面资源对象或按钮资源对象与对应的页面资源信息表或按钮资源信息表中记录是否发生变更,将变更的页面资源对象或按钮资源对象新增至页面资源对象临时表或按钮资源临时表中。
10.根据权利要求9所述的多租户页面访问控制系统,其特征在于,所述资源识别模块在显示登录用户访问的页面及其按钮时,执行以下操作:
根据登录用户访问的页面,获取对应的页面ID、资源类型,如果资源类型是公共页面,则将所述页面ID作为父级页面ID,在页面资源信息表中查询所述父级页面下所述租户的子页面,如果查询出子页面,则关联查询出所述子页面对应的按钮资源,根据子页面的数量,在父级页面中通过不同的控件展示出子页面,并根据登录用户的权限,显示子页面中所述登录用户有权限访问的按钮;
如果未查询出子页面,则根据登录用户访问的页面的页面路径和登录用户的权限,显示对应页面及所述登录用户有权限访问的按钮。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210170855.3A CN114546563B (zh) | 2022-02-23 | 2022-02-23 | 一种多租户页面访问控制方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210170855.3A CN114546563B (zh) | 2022-02-23 | 2022-02-23 | 一种多租户页面访问控制方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114546563A true CN114546563A (zh) | 2022-05-27 |
CN114546563B CN114546563B (zh) | 2023-04-28 |
Family
ID=81677496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210170855.3A Active CN114546563B (zh) | 2022-02-23 | 2022-02-23 | 一种多租户页面访问控制方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546563B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116846782A (zh) * | 2023-08-31 | 2023-10-03 | 北京仁科互动网络技术有限公司 | Saas crm系统移动端的业务异常观测方法和装置 |
CN117407091A (zh) * | 2023-12-12 | 2024-01-16 | 中核武汉核电运行技术股份有限公司 | 基于文件本地化部署的web画面快速加载方法及系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130086322A1 (en) * | 2011-09-30 | 2013-04-04 | Oracle International Corporation | Systems and methods for multitenancy data |
US20130132425A1 (en) * | 2011-11-21 | 2013-05-23 | Electronics And Telecommunications Research Institute | Query definition apparatus and method for multi-tenant |
CN107534603A (zh) * | 2015-03-31 | 2018-01-02 | 日本电气株式会社 | 控制器、控制方法和程序 |
CN109214151A (zh) * | 2018-09-28 | 2019-01-15 | 北京赛博贝斯数据科技有限责任公司 | 用户权限的控制方法及系统 |
CN109241028A (zh) * | 2018-08-02 | 2019-01-18 | 山东浪潮通软信息科技有限公司 | 一种基于Mycat的数据库多租户实现方法 |
CN110489207A (zh) * | 2019-07-11 | 2019-11-22 | 平安科技(深圳)有限公司 | 参数验证方法、装置及计算机可读存储介质 |
CN110806916A (zh) * | 2019-11-05 | 2020-02-18 | 北京金和网络股份有限公司 | 实现saas平台各租户个性化登录页的方法及系统 |
CN111177776A (zh) * | 2019-12-20 | 2020-05-19 | 平安资产管理有限责任公司 | 多租户数据隔离方法与系统 |
CN111428256A (zh) * | 2020-03-30 | 2020-07-17 | 北京东方金信科技有限公司 | 一种大数据平台多租户管理系统 |
CN112100262A (zh) * | 2020-09-16 | 2020-12-18 | 南京智数云信息科技有限公司 | 多租户SaaS平台快速搭建及动态扩容的方法及系统 |
CN112311804A (zh) * | 2020-11-06 | 2021-02-02 | 东北大学 | 一种多租户服务资源动态访问授权与认证系统及方法 |
CN112955869A (zh) * | 2018-11-08 | 2021-06-11 | 英特尔公司 | 功能即服务(faas)系统增强 |
-
2022
- 2022-02-23 CN CN202210170855.3A patent/CN114546563B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130086322A1 (en) * | 2011-09-30 | 2013-04-04 | Oracle International Corporation | Systems and methods for multitenancy data |
US20130132425A1 (en) * | 2011-11-21 | 2013-05-23 | Electronics And Telecommunications Research Institute | Query definition apparatus and method for multi-tenant |
CN107534603A (zh) * | 2015-03-31 | 2018-01-02 | 日本电气株式会社 | 控制器、控制方法和程序 |
CN109241028A (zh) * | 2018-08-02 | 2019-01-18 | 山东浪潮通软信息科技有限公司 | 一种基于Mycat的数据库多租户实现方法 |
CN109214151A (zh) * | 2018-09-28 | 2019-01-15 | 北京赛博贝斯数据科技有限责任公司 | 用户权限的控制方法及系统 |
CN112955869A (zh) * | 2018-11-08 | 2021-06-11 | 英特尔公司 | 功能即服务(faas)系统增强 |
CN110489207A (zh) * | 2019-07-11 | 2019-11-22 | 平安科技(深圳)有限公司 | 参数验证方法、装置及计算机可读存储介质 |
CN110806916A (zh) * | 2019-11-05 | 2020-02-18 | 北京金和网络股份有限公司 | 实现saas平台各租户个性化登录页的方法及系统 |
CN111177776A (zh) * | 2019-12-20 | 2020-05-19 | 平安资产管理有限责任公司 | 多租户数据隔离方法与系统 |
CN111428256A (zh) * | 2020-03-30 | 2020-07-17 | 北京东方金信科技有限公司 | 一种大数据平台多租户管理系统 |
CN112100262A (zh) * | 2020-09-16 | 2020-12-18 | 南京智数云信息科技有限公司 | 多租户SaaS平台快速搭建及动态扩容的方法及系统 |
CN112311804A (zh) * | 2020-11-06 | 2021-02-02 | 东北大学 | 一种多租户服务资源动态访问授权与认证系统及方法 |
Non-Patent Citations (5)
Title |
---|
KHADIJA AOUZAL 等: ""Policy-driven middleware for multi-tenant saas services configuration"" * |
张亮: ""多租户模式云呼叫中心的居家客服应用及思考"" * |
文一凭 等: ""云工作流环境下隐私感知的多租户访问控制模型"" * |
贾伟: ""基于SaaS的库存管理系统的设计与实现"" * |
金诗剑;蔡鸿明;姜丽红;: "面向服务的多租户访问控制模型研究" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116846782A (zh) * | 2023-08-31 | 2023-10-03 | 北京仁科互动网络技术有限公司 | Saas crm系统移动端的业务异常观测方法和装置 |
CN116846782B (zh) * | 2023-08-31 | 2024-01-02 | 北京仁科互动网络技术有限公司 | Saas crm系统移动端的业务异常观测方法和装置 |
CN117407091A (zh) * | 2023-12-12 | 2024-01-16 | 中核武汉核电运行技术股份有限公司 | 基于文件本地化部署的web画面快速加载方法及系统 |
CN117407091B (zh) * | 2023-12-12 | 2024-03-19 | 中核武汉核电运行技术股份有限公司 | 基于文件本地化部署的web画面快速加载方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114546563B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6061726A (en) | Dynamic rights assignment apparatus and method using network directory services | |
US6173289B1 (en) | Apparatus and method for performing actions on object-oriented software objects in a directory services system | |
US7926030B1 (en) | Configurable software application | |
US5987471A (en) | Sub-foldering system in a directory-service-based launcher | |
CN111324571B (zh) | 一种容器集群管理方法、装置及系统 | |
CN110389829B (zh) | 多租户环境中扩展对象的分类与分发 | |
US20050091346A1 (en) | Settings management infrastructure | |
CN109101428B (zh) | 一种ui自动化测试系统 | |
US20070050751A1 (en) | Automatic interoperation with legacy POS service and control objects | |
CA2777443A1 (en) | Automated enterprise software development | |
CN114546563B (zh) | 一种多租户页面访问控制方法和系统 | |
CN112149109B (zh) | 模块化权限控制管理方法及系统 | |
US6658644B1 (en) | Services-based architecture for a telecommunications enterprise | |
US8185562B2 (en) | Business object browser for business query language | |
CN112860777B (zh) | 数据处理方法、装置及设备 | |
US11948005B2 (en) | Managed integration of constituent services of multi-service applications | |
US11704114B2 (en) | Data structures for managing configuration versions of cloud-based applications | |
US11966732B2 (en) | Data structures for managing configuration versions of cloud-based applications | |
CN116450107B (zh) | 低代码平台二次开发软件的方法、装置、电子设备 | |
CN111459907B (zh) | 通过模型配置主数据的方法、系统及存储介质 | |
EP4154129A1 (en) | Database management methods and associated apparatus | |
US8910183B2 (en) | Access to context information in a heterogeneous application environment | |
US7945598B2 (en) | Methodology for the automatic capture of process information in federated knowledge systems | |
KR20040079337A (ko) | 분산형 컴퓨팅 시스템을 위한 아키텍처 및 분산형애플리케이션들의 자동화된 설계, 배포와 관리 | |
CN117112654B (zh) | 城市数据展示方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |