掌桥专利:专业的专利平台
掌桥专利
首页

一种权限校验方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 11:57:35


一种权限校验方法、装置、计算机设备及存储介质

技术领域

本发明涉及系统安全技术领域,更具体地说,涉及一种权限校验方法、装置、计算机设备及存储介质。

背景技术

权限在服务端主要体现为用户能访问哪些数据以及操作哪些功能,在客户端中通常体现为用户能访问哪些菜单,按钮。常规权限设计方案是在后端将用户与权限直接绑定,为不同用户赋予不同的权限,客户端菜单及按钮都写死,用户触发操作后提交到后端进行权限校验。这种常规的权限设计方案在权限设计上不够灵活,不管是在系统设计上还是在用户体验上都不是很友好。

发明内容

有鉴于此,为解决上述问题,本发明提供一种权限校验方法、装置、计算机设备及存储介质,以提高权限设计的灵活性,进而增加在系统设计、用户体验上的友好性,技术方案如下:

一种权限校验方法,包括:

接收客户端响应目标用户操作发送的页面打开请求,确定所述页面打开请求所请求打开的目标页面;

根据所述目标用户拥有的每个角色对应的权限确定所述目标用户的用户权限信息;所述用户权限信息包括视图权限信息及数据权限信息,所述视图权限信息指示菜单权限和按钮权限中的任意一种或多种;

获取所述目标页面中满足所述数据权限信息指示的数据权限的数据信息;

向所述客户端返回所述视图权限信息和所述数据信息,以便于所述客户端基于VUE语言利用所述视图权限信息动态渲染DOM树并加载所述数据信息,以生成并展示满足所述目标用户的用户权限信息的目标页面。

优选的,所述根据所述目标用户拥有的每个角色对应的权限确定所述目标用户的用户权限信息,包括:

获取所述目标用户拥有的至少一个角色;

分别确定所述至少一个角色中每个所述角色对应的至少一个权限,所述至少一个权限包括菜单权限、按钮权限和数据权限中的任意一种或多种;

根据所确定的所有权限生成所述目标用户的用户权限信息。

优选的,还包括:

判断缓存中是否存储有所述目标用户的历史用户权限信息;

若所述缓存中存储有所述目标用户的历史用户权限信息,将所述历史用户权限信息确定为所述目标用户的用户权限信息;

所述根据所述目标用户拥有的每个角色对应的权限确定所述目标用户的用户权限信息,包括:若所述缓存中未存储有所述目标用户的历史用户权限信息,根据所述目标用户拥有的每个角色对应的权限确定所述目标用户的用户权限信息。

优选的,还包括:

响应对所述目标用户的用户权限信息的修改操作,重新确定所述目标用户的用户权限信息;

将所述缓存中存储的历史用户权限信息更新为重新确定的所述目标用户的用户权限信息。

优选的,所述修改操作包括:为所述目标用户新增角色,所新增的角色对应至少一个权限;删除所述目标用户的角色;以及,修改所述目标用户的角色所对应的权限中的任意一项或多项。

一种权限校验装置,包括:

请求接收单元,用于接收客户端响应目标用户操作发送的页面打开请求,确定所述页面打开请求所请求打开的目标页面;

权限信息生成单元,用于根据所述目标用户拥有的每个角色对应的权限确定所述目标用户的用户权限信息;所述用户权限信息包括视图权限信息及数据权限信息,所述视图权限信息指示菜单权限和按钮权限中的任意一种或多种;

数据信息获取单元,用于获取所述目标页面中满足所述数据权限信息指示的数据权限的数据信息;

信息返回单元,用于向所述客户端返回所述视图权限信息和所述数据信息,以便于所述客户端基于VUE语言利用所述视图权限信息动态渲染DOM树并加载所述数据信息,以生成并展示满足所述目标用户的用户权限信息的目标页面。

优选的,所述权限信息生成单元,包括:

角色获取单元,用于获取所述目标用户拥有的至少一个角色;

权限确定单元,用于分别确定所述至少一个角色中每个所述角色对应的至少一个权限,所述至少一个权限包括菜单权限、按钮权限和数据权限中的任意一种或多种;

权限信息生成子单元,用于根据所确定的所有权限生成所述目标用户的用户权限信息。

优选的,该装置还包括:

判断单元,用于判断缓存中是否存储有所述目标用户的历史用户权限信息;

权限信息确定单元,用于若所述缓存中存储有所述目标用户的历史用户权限信息,将所述历史用户权限信息确定为所述目标用户的用户权限信息;

所述权限信息生成单元,具体用于:若所述缓存中未存储有所述目标用户的历史用户权限信息,根据所述目标用户拥有的每个角色对应的权限确定所述目标用户的用户权限信息。

一种计算机设备,包括:处理器以及存储器,所述处理器以及存储器通过通信总线相连;其中,所述处理器,用于调用并执行所述存储器中存储的程序;所述存储器,用于存储程序,所述程序用于实现所述权限校验方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器加载并执行,实现所述权限校验方法的各步骤。

本申请提供一种权限校验方法、装置、计算机设备及存储介质,确定客户端发送的页面打开请求所请求打开的目标页面;根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息;用户权限信息包括视图权限信息及数据权限信息,获取目标页面中满足数据权限信息指示的数据权限的数据信息;向客户端返回视图权限信息和数据信息,以便于客户端基于VUE语言利用视图权限信息动态渲染DOM树并加载数据信息,以生成并展示满足目标用户的用户权限信息的目标页面。本申请不仅在后端引入角色来实现对用户权限的灵活设定,而且在客户端引入VUE语言基于用户的客户端权限来实现对页面的动态渲染,使得权限设计更加灵活,增加了在系统设计、用户体验上的友好性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供一种权限校验方法流程图;

图2为本申请实施例提供的一种用户关系原理示意图;

图3为本申请实施例提供的一种用户权限与角色关系原理示意图;

图4为本申请实施例提供的另一种权限校验方法流程图;

图5为本申请实施例提供的一种权限校验方法示意图;

图6为本申请实施例提供的一种权限校验装置的结构示意图;

图7为本申请实施例提供的一种权限校验方法所适用于的计算机设备的硬件结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在后台管理系统开发过程中,权限管理是系统中重要的组成部分,主要作用是对后台管理系统进行权限控制,避免因权限缺失或操作不当引发的数据安全问题,如操作错误,数据泄露等问题。权限在服务端主要体现为用户能访问哪些数据以及操作哪些功能,在客户端页面中通常体现为用户能访问哪些菜单,按钮。常规权限系统设计是在后端将用户与权限直接绑定,为不同用户赋予不同的权限,客户端菜单及按钮都写死,用户触发操作后提交到服务端进行权限校验。这样不管是在系统设计上还是在用户体验上都不是很友好。本申请提供的权限校验方法,通过引入Vue.js动态渲染页面DOM树实现无侵入的嵌入到现有系统中,帮助设计更优雅的权限系统,提高用户体验。

本申请适用于互联网web服务,尤其是各系统的后台管理中,用于保护系统安全,隐私安全,提高用户体验与系统健壮性。

本申请在服务端增加角色元素,用户直接跟角色绑定,避免重复操作已经垃圾数据的产生,当用户权限或角色发现变化时增量下发用户新权限,同时利用缓存技术加快权限校验等接口的速度。客户端使用VUE语言渐进式构建用户界面,动态生成菜单,自定义权限控制指令等,做到实时更新用户权限数据。

为了便于对本申请实施例提供的一种权限校验方法的理解,现先对本申请实施例所涉及到的技术术语进行解释说明。

Vue.js是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。

Spring Cache,基于注解的缓存技术,它本质上不是一个具体的缓存实现方案,而是一个对缓存使用的抽象,通过在既有代码中加入少量它定义的各种annotation,即能够达到缓存方法的返回对象的效果。Spring的缓存技术还具备相当的灵活性。不仅能够使用SpEL(Spring Expression Language)来定义缓存的key和各种condition,还提供开箱即用的缓存暂时存储方案,也支持和主流的专业缓存比如EHCache集成。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

图1为本申请实施例提供一种权限校验方法流程图。

如图1所示,该方法包括:

S101、接收客户端响应目标用户操作发送的页面打开请求,确定页面打开请求所请求打开的目标页面;

示例性的,用户的终端上可以安装客户端,客户端可以响应用户的操作向服务端发送页面打开请求,该页面打开请求指示有用户请求打开的页面。

相应的,服务端接收到页面打开请求后,可以确定用户通过页面打开请求所请求打开的页面。为了便于区分,将发送页面打开请求的用户称为目标用户,将目标用户通过页面打开请求所请求打开的页面称为目标页面。

S102、根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息;用户权限信息包括视图权限信息及数据权限信息,视图权限信息指示菜单权限和按钮权限中的任意一种或多种;

图2为本申请实施例提供的一种用户关系原理示意图,图3为本申请实施例提供的一种用户权限与角色关系原理示意图。结合图2-3,服务端的数据库中可以建立如下关系表结构,用户表,用户角色表,角色权限表。示例性的,用户、角色和权限之间的关系可以为:一个用户可拥有一个或多个角色,每个角色可以对应一个或多个权限。比如,用户A拥有角色1和角色2两个角色,角色1对应的增加权限和删除权限,角色2对应审核权限。

本申请实施例,服务端接收页面打开请求,不仅可以确定目标用户通过页面打开请求所请求打开的目标页面,还可以获取预先设置的目标用户拥有的至少一个角色;并针对至少一个角色中的每个角色,确定预先设置的该角色对应的至少一个权限;进而将获取到的所有权限的并集作为目标用户的用户权限信息。

示例性的,若服务器端中预先设置用户A拥有角色1和角色2两个角色,角色1对应的增加权限和删除权限,角色2对应审核权限;则在确定发送页面打开请求的用户为用户A的情况下,所确定出的用户的用户权限信息由增加权限、删除权限和审核权限构成。

S103、获取目标页面中满足数据权限信息指示的数据权限的数据信息;

示例性的,目标用户的用户权限信息指示一个或多个权限,用户权限信息指示的权限中可能涉及到视图权限、数据权限等。其中,视图权限可能为菜单权限、按钮权限等。

本申请实施例,接收目标用户发送的页面打开请求,确定页面打开请求所请求打开的页面并确定目标用户的用户权限信息,用户权限信息包括数据权限信息和视图权限信息;根据数据权限信息获取用于加载至目标页面中的数据,为了便于区分,将所获取到的数据称为数据信息,数据信息是目标用户的权限可以查看的数据;以及将获取到的数据信息和视图权限信息返回至客户端。

S104、向客户端返回视图权限信息和数据信息,以便于客户端基于VUE语言利用视图权限信息动态渲染DOM树并加载数据信息,以生成并展示满足目标用户的用户权限信息的目标页面。

示例性的,客户端接收视图权限信息和数据信息,基于VUE语言利用视图权限信息动态渲染DOM树并加载数据信息,以生成并展示满足目标用户的用户权限信息的目标页面。

图4为本申请实施例提供的另一种权限校验方法流程图。

如图4所示,该方法包括:

S401、接收客户端响应目标用户操作发送的页面打开请求,确定页面打开请求所请求打开的目标页面;

本申请实施例提供的步骤S401的执行过程与上述实施例提供的步骤S101的执行过程相同,有关步骤S401的具体执行过程请参见上述实施例对步骤S101的详细描述,在此不做赘述。

S402、判断缓存中是否存储有目标用户的历史用户权限信息;若缓存中存储有目标用户的历史用户权限信息,执行步骤S403;若缓存中未存储有目标用户的历史用户权限信息,执行步骤S404;

示例性的,服务端中设置有缓存,初始化缓存为空,服务端接收到目标用户发送的页面打开请求后,若当前缓存中存储有目标用户的历史用户权限信息,将当前缓存中存储的目标用户的历史用户权限信息直接确定为目标用户的用户权限信息;若当前缓存中未存储有目标用户的用户权限信息,可以根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息,并且将所确定的用户权限信息存储至缓存,为了便于区分,存储至缓存的用户权限信息可以称为历史用户权限信息。

需要说明的是,服务端还可以响应对数据库中存储的目标用户的用户权限信息的修改操作,重新确定目标用户的用户权限信息,并将当前缓存中存储的目标用户的历史用户权限信息更新为该重新确定的目标用户的用户权限信息。

本申请实施例,修改操作包括为目标用户新增角色(所新增的角色对应至少一个权限);删除目标用户的角色;以及,修改目标用户的角色所对应的权限中的任意一项或多项。

示例性的,可以为目标用户设置一个新的角色,并为该新设置的角色设置一个或多个权限。

示例性的,也可以删除目标用户的某一个或多个角色,以一个角色为例,该角色被删除后,该角色对应的权限也被删除。

示例性的,也可以修改目标用户的角色所对应的权限。

以上仅仅是本申请实施例提供的修改操作的几种优选实现方式,有关修改操作的具体实现方式,本领域技术人员可根据自己的需求进行设置,在此不做限定。

S403、将历史用户权限信息确定为目标用户的用户权限信息;

S404、根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息;用户权限信息包括视图权限信息及数据权限信息,视图权限信息指示菜单权限和按钮权限中的任意一种或多种;

S405、获取目标页面中满足数据权限信息指示的数据权限的数据信息;

S406、向客户端返回视图权限信息和数据信息,以便于客户端基于VUE语言利用视图权限信息动态渲染DOM树并加载数据信息,以生成并展示满足目标用户的用户权限信息的目标页面。

本申请实施例提供的步骤S404-S406的执行过程与上述实施例提供的步骤S102-S104的执行过程相同,有关步骤S404-S406的具体执行过程请参见上述实施例对步骤S102-S104的详细描述,在此不做赘述。

本申请提供一种权限校验方法,确定客户端发送的页面打开请求所请求打开的目标页面;根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息;用户权限信息包括视图权限信息及数据权限信息,获取目标页面中满足数据权限信息指示的数据权限的数据信息;向客户端返回视图权限信息和数据信息,以便于客户端基于VUE语言利用视图权限信息动态渲染DOM树并加载数据信息,以生成并展示满足目标用户的用户权限信息的目标页面。本申请不仅在后端引入角色来实现对用户权限的灵活设定,而且在客户端引入VUE语言基于用户的客户端权限来实现对页面的动态渲染,使得权限设计更加灵活,增加了在系统设计、用户体验上的友好性。

为了便于对本申请实施例提供的一种权限校验方法的理解,现结合图5所示的权限校验方法示意图进行进一步详细说明。

步骤一:在数据库中建立以下关系表结构,用户表,用户角色表,角色权限表,新增与客户端对应的菜单,按钮,以及数据权限等数据,并新增相应的用户角色数据。

步骤二:在服务端引入SpringBoot依赖,1)定义用户权限缓存管理器,负责实现缓存逻辑,支持对象的添加,改动,删除支持值对象的泛型。2)定义用户账号类,具备主要的id和name属性,且具备getter和setter方法。3)定义一个账号查询服务类,此服务类使用缓存管理器来支持账号查询缓存。

步骤三:在服务端定义拦截器,针对需要权限校验的请求进行动态拦截校验,通过步骤一中定义的菜单,数据,按钮的权限key值,当用户请求服务端时通过权限key动态匹配用户是否拥有此项操作权限。

步骤四:在服务端定义RESTful API风格权限列表系列接口,在接口设计时引用步骤二中缓存管理器对接口进行优化,提高接口效率。使用缓存管理器时定义缓存失效状态,当用户权限发生变化时,立即清除用户权限缓存,并将最新的权限列表设置进缓存。

步骤五:在客户端引入vue.js,创建单页面引用,定义入口文件以及入口方法,入口文件中分别引入vueRouter,vuex并绑定原始的HTML类id,后续vue通过构造器将各文件内容打成js文件,通过id注入原始页面中,实现动态渲染页面DOM。

步骤六:在客户端中定义页面路由文件,通过调用服务端接口下发的菜单权限列表,组装好路由并注入到vue中,通过vuex创建应用浏览器缓存,提高页面渲染效率。

步骤七:在客户端中通过vue提供的特性directives自定义权限指令v-privilege,在需要权限控制的按钮上使用v-privilege:{key}来控制按钮是否展示,当用户权限集合不包含该key时自动display掉页面中的DOM元素

步骤八:在客户端中通过引入asios HTTP库,定义各权限接口请求,并在对应客户端页面中进行访问调用,通过在各客户端页面中注入步骤七中定义的v-privilege指令,打通客户端与服务端交互流程。

本申请实施例提供的一种权限校验方法,可以自定义指令级权限控制器v-privilege,通过自定义权限指令动态渲染页面元素;并且,客户端可以实时通过增量接口获取新增的权限菜单并更新页面视图;而且客户端可以通过接口获取用户菜单列表后动态渲染DOM页面树,实现动态菜单路由。

图6为本申请实施例提供的一种权限校验装置的结构示意图。

如图6所示,该装置包括:

请求接收单元601,用于接收客户端响应目标用户操作发送的页面打开请求,确定页面打开请求所请求打开的目标页面;

权限信息生成单元602,用于根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息;用户权限信息包括视图权限信息及数据权限信息,视图权限信息指示菜单权限和按钮权限中的任意一种或多种;

数据信息获取单元603,用于获取目标页面中满足数据权限信息指示的数据权限的数据信息;

信息返回单元604,用于向客户端返回视图权限信息和数据信息,以便于客户端基于VUE语言利用视图权限信息动态渲染DOM树并加载数据信息,以生成并展示满足目标用户的用户权限信息的目标页面。

本申请实施例中,优选的,权限信息生成单元,包括:

角色获取单元,用于获取目标用户拥有的至少一个角色;

权限确定单元,用于分别确定至少一个角色中每个角色对应的至少一个权限,至少一个权限包括菜单权限、按钮权限和数据权限中的任意一种或多种;

权限信息生成子单元,用于根据所确定的所有权限生成目标用户的用户权限信息。

进一步的,本申请实施例提供的一种权限校验装置还包括:

判断单元,用于判断缓存中是否存储有目标用户的历史用户权限信息;

权限信息确定单元,用于若缓存中存储有目标用户的历史用户权限信息,将历史用户权限信息确定为目标用户的用户权限信息;

权限信息生成单元,具体用于:若缓存中未存储有目标用户的历史用户权限信息,根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息。

进一步的,本申请实施例提供的一种权限校验装置还包括:

修改单元,用于响应对目标用户的用户权限信息的修改操作,重新确定目标用户的用户权限信息;

更新单元,用于将缓存中存储的历史用户权限信息更新为重新确定的目标用户的用户权限信息。

本申请实施例中,优选的,修改操作包括:为目标用户新增角色,所新增的角色对应至少一个权限;删除目标用户的角色;以及,修改目标用户的角色所对应的权限中的任意一项或多项。

如图7所示,为本申请实施例提供的计算机设备的一种实现方式的结构图,该计算机设备包括:

存储器701,用于存储程序;

处理器702,用于执行程序,程序具体用于:

接收客户端响应目标用户操作发送的页面打开请求,确定页面打开请求所请求打开的目标页面;

根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息;用户权限信息包括视图权限信息及数据权限信息,视图权限信息指示菜单权限和按钮权限中的任意一种或多种;

获取目标页面中满足数据权限信息指示的数据权限的数据信息;

向客户端返回视图权限信息和数据信息,以便于客户端基于VUE语言利用视图权限信息动态渲染DOM树并加载数据信息,以生成并展示满足目标用户的用户权限信息的目标页面。

处理器702可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit)。

控制设备还可以包括通信接口703以及通信总线704,其中,存储器701、处理器702以及通信接口703通过通信总线704完成相互间的通信。

本申请实施例还提供了一种可读存储介质,其上存储有计算机程序,计算机程序被处理器加载并执行,实现上述的权限校验方法的各步骤,具体实现过程可以参照上述实施例相应部分的描述,本实施例不做赘述。

本申请提供一种权限校验方法、装置、计算机设备及存储介质,确定客户端发送的页面打开请求所请求打开的目标页面;根据目标用户拥有的每个角色对应的权限确定目标用户的用户权限信息;用户权限信息包括视图权限信息及数据权限信息,获取目标页面中满足数据权限信息指示的数据权限的数据信息;向客户端返回视图权限信息和数据信息,以便于客户端基于VUE语言利用视图权限信息动态渲染DOM树并加载数据信息,以生成并展示满足目标用户的用户权限信息的目标页面。本申请不仅在后端引入角色来实现对用户权限的灵活设定,而且在客户端引入VUE语言基于用户的客户端权限来实现对页面的动态渲染,使得权限设计更加灵活,增加了在系统设计、用户体验上的友好性。

以上对本发明所提供的一种权限校验方法、装置、计算机设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素,或者是还包括为这些过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种权限校验方法、装置、计算机设备及存储介质
  • 测试机的部署权限校验方法、装置、计算机设备及存储介质
技术分类

06120113116762