CN117056952A - 权限控制方法和系统、客户端、服务端和存储介质 - Google Patents

权限控制方法和系统、客户端、服务端和存储介质 Download PDF

Info

Publication number
CN117056952A
CN117056952A CN202311014716.2A CN202311014716A CN117056952A CN 117056952 A CN117056952 A CN 117056952A CN 202311014716 A CN202311014716 A CN 202311014716A CN 117056952 A CN117056952 A CN 117056952A
Authority
CN
China
Prior art keywords
authority
time
client
permission
data
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.)
Pending
Application number
CN202311014716.2A
Other languages
English (en)
Inventor
万亭君
谭华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Telecom Technology Innovation Center
China Telecom Corp Ltd
Original Assignee
China Telecom Technology Innovation Center
China Telecom Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Telecom Technology Innovation Center, China Telecom Corp Ltd filed Critical China Telecom Technology Innovation Center
Priority to CN202311014716.2A priority Critical patent/CN117056952A/zh
Publication of CN117056952A publication Critical patent/CN117056952A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)

Abstract

本公开涉及一种权限控制方法和系统、客户端、服务端和存储介质。该方法包括:在用户登录系统的情况下,从服务端获取用户基本信息和权限信息,其中,权限信息包括第一权限时间;在客户端缓存权限信息;根据权限信息渲染客户端界面;向服务端发送操作请求,其中,所示操作请求包括第一权限时间,以便服务端比较第一权限时间和数据库中的第二权限时间;接收服务端返回的响应数据,其中,所述响应数据包括权限时间字段;根据所述响应数据对页面进行渲染。本公开中,如果用户权限被改变,用户在进行操作请求时,可直接获取到最新的权限数据,客户端就可以直接依据最新权限信息进行渲染,不必进行额外的用户权限请求。

Description

权限控制方法和系统、客户端、服务端和存储介质
技术领域
本公开涉及信息技术领域,特别涉及一种权限控制方法和系统、客户端、服务端和存储介质。
背景技术
相关技术在之前Web系统中,权限很久以来一直由后端控制,随着前后端架构的分离,越来越多的项目的权限控制也在前端进行。
RBAC(Role-Based Access Control,基于角色的访问控制)是当前使用最广泛的权限模型,该模型的核心是在用户和权限之间引入了角色的概念,取消了用户和权限的直接关联,改为通过用户关联角色、角色关联权限的方法来间接地赋予用户权限,从而达到用户和权限解耦的目的。
相关技术前端主流的2种基于RBAC的权限控制方案:
方案1:前端记录所有权限,将所有权限信息写在前端项目代码中。用户登陆后,后端返回用户角色,前端根据角色进行权限的分配。
方案2:前端记录页面,后端记录权限。用户登陆后,从后端获取可用权限,根据后端返回权限进行渲染。
发明内容
发明人通过研究发现:相关技术的两种方案在修改用户具有的权限时都比较困难。需要技术人员配合修改相关代码,用户也只能通过退出系统或等到登陆过期后重新登陆等用户自主操作的方式进行权限更新。
鉴于以上技术问题中的至少一项,本公开提供了一种权限控制方法和系统、客户端、服务端和存储介质,如果用户权限被改变,用户在进行操作请求时,可直接获取到最新的权限数据,客户端就可以直接依据最新权限信息进行渲染,不必进行额外的用户权限请求。
根据本公开的一个方面,提供一种权限控制方法,包括:
在用户登录系统的情况下,从服务端获取用户基本信息和权限信息,其中,权限信息包括第一权限时间;
在客户端缓存权限信息;
根据权限信息渲染客户端界面;
向服务端发送操作请求,其中,所示操作请求包括第一权限时间,以便服务端比较第一权限时间和数据库中的第二权限时间;
接收服务端返回的响应数据,其中,所述响应数据包括权限时间字段;
根据所述响应数据对页面进行渲染。
在本公开的一些实施例中,所述根据所述响应数据对页面进行渲染包括:
在所述权限时间字段为已修改的情况下,清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染,其中,所述响应数据还包括新的权限信息,服务端在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端。
在本公开的一些实施例中,所述根据所述响应数据对页面进行渲染包括:
在所述权限时间字段为空的情况下,判定权限信息未更新,根据用户请求数据对客户端界面进行渲染,其中,所述响应数据还包括用户请求数据,服务端在第一权限时间和数据库中的第二权限时间相同的情况下,返回响应数据到客户端。
在本公开的一些实施例中,所述权限信息还包括菜单权限数据和按钮权限数据。
在本公开的一些实施例中,所述根据权限信息渲染客户端界面包括:
将菜单权限数据和按钮权限数据进行数据格式转换,包括:将菜单权限数据转换为动态路由数据;
将动态路由数据和本地默认路由数据合并为总权限路由数据;
循环遍历总权限路由数据,生成菜单栏;
采用原型挂载方式判断按钮权限数据中是否存在按钮所需要的权限,动态渲染权限按钮。
在本公开的一些实施例中,所述权限控制方法还包括:
接收用户选择的新增角色的菜单权限和按钮权限;
将用户选择的新增角色的菜单权限和按钮权限发送到服务端,以便服务端进行权限配置,并基于配置时间,生成第二权限时间。
在本公开的一些实施例中,所述权限控制方法还包括:
向服务端发送角色权限修改请求,以便服务端进行角色权限修改,并根据修改权限时间更新第二权限时间。
根据本公开的另一方面,提供一种权限控制方法,包括:
接收客户端发送的操作请求,其中,所示操作请求包括第一权限时间,第一权限时间包括在权限信息中,所述用户基本信息和权限信息为在用户登录系统的情况下从服务端获取、并缓存在客户端的,所述权限信息,用于渲染客户端界面;
比较第一权限时间和数据库中的第二权限时间;
根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据,以便客户端根据所述响应数据对页面进行渲染。
在本公开的一些实施例中,所述根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据包括:
在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端,其中,所述响应数据包括用户的新权限信息和权限时间字段,以便客户端清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染。
在本公开的一些实施例中,所述根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据包括:
在第一权限时间和数据库中的第二权限时间相同的情况下,设置权限时间字段设置为空,返回响应数据到客户端,其中,所述响应数据包括用户请求数据和权限时间字段,以便客户端根据用户请求数据对客户端界面进行渲染。
在本公开的一些实施例中,所述权限信息还包括菜单权限数据和按钮权限数据。
在本公开的一些实施例中,所述权限控制方法还包括:
接收客户端发送的、用户选择的新增角色的菜单权限和按钮权限;
根据用户选择的新增角色的菜单权限和按钮权限,进行权限配置;
基于配置时间,生成第二权限时间,并存储在数据库中。
在本公开的一些实施例中,所述权限控制方法还包括:
接收客户端发送的角色权限修改请求;
根据所述角色权限修改请求进行角色权限修改;
根据修改权限时间更新第二权限时间。
根据本公开的另一方面,提供一种客户端,包括:
信息获取模块,被配置为在用户登录系统的情况下,从服务端获取用户基本信息和权限信息,其中,权限信息包括第一权限时间;
信息缓存模块,被配置为在客户端缓存权限信息;
界面渲染模块,被配置为根据权限信息渲染客户端界面;
操作请求发送模块,被配置为向服务端发送操作请求,其中,所示操作请求包括第一权限时间,以便服务端比较第一权限时间和数据库中的第二权限时间;
响应数据接收模块,被配置为接收服务端返回的响应数据,其中,所述响应数据包括权限时间字段;
其中,界面渲染模块,还被配置为根据所述响应数据对页面进行渲染。
根据本公开的另一方面,提供一种客户端,包括:
客户端存储器,被配置为存储指令;
客户端处理器,被配置为执行所述指令,使得所述客户端执行实现如上述任一实施例所述权限控制方法的操作。
根据本公开的另一方面,提供一种服务端,包括:
操作请求接收模块,被配置为接收客户端发送的操作请求,其中,所示操作请求包括第一权限时间,第一权限时间包括在权限信息中,所述用户基本信息和权限信息为在用户登录系统的情况下从服务端获取、并缓存在客户端的,所述权限信息,用于渲染客户端界面;
权限校验模块,被配置为比较第一权限时间和数据库中的第二权限时间;并根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据,以便客户端根据所述响应数据对页面进行渲染。
根据本公开的另一方面,提供一种服务端,包括:
服务端存储器,被配置为存储指令;
服务端处理器,被配置为执行所述指令,使得所述服务端执行实现如上述任一实施例所述权限控制方法的操作。
根据本公开的另一方面,提供一种权限控制系统,包括如上述任一实施例所述的客户端和如上述任一实施例所述的服务端。
根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例所述权限控制方法。
本公开中,如果用户权限被改变,用户在进行操作请求时,可直接获取到最新的权限数据,客户端就可以直接依据最新权限信息进行渲染,不必进行额外的用户权限请求。用户在客户端依据最新权限进行操作,不必强制退出系统。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开权限控制方法一些实施例的示意图。
图2为本公开一些实施例中基于RBAC的权限控制系统的关系映射图。
图3为本公开权限控制方法另一些实施例的示意图。
图4为本公开权限控制方法又一些实施例的示意图。
图5为本公开权限控制方法另一些实施例的示意图。
图6为本公开权限控制方法又一些实施例的示意图。
图7为本公开权限控制方法又一些实施例的示意图。
图8为本公开客户端一些实施例的示意图。
图9为本公开客户端另一些实施例的结构示意图。
图10为本公开服务端一些实施例的示意图。
图11为本公开服务端另一些实施例的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
发明人通过研究发现:相关技术的两种方案在修改用户具有的权限时都比较困难。需要技术人员配合修改相关代码,用户也只能通过退出系统或等到登陆过期后重新登陆等用户自主操作的方式进行权限更新。如果用户对应角色的最新权限有所增加,则用户无法及时使用增加的权限,影响用户使用体验。相反的,如果用户对应角色的最新权限有所减少,则无法及时限制用户的某些使用功能,进而造成系统安全问题。
为了实现动态权限和提升性能,必须要在客户端对权限数据进行缓存。具体原因为:
1)服务端性能:用户权限数据结构复杂,并且随着业务的增加数据量也在增大。每一次请求,服务端都要重新从数据库读取、按格式拼装这些数据,没有必要,增加服务端压力。
2)网络性能:依据不同业务需求,可能会将获取用户全部权限数据单独设置为一个接口,如果客户端不进行缓存,用户的每次操作,都会调用此接口,大量增加网络请求。重新获取用户权限数据。会产生大量冗余无用的网络请求,增加接口负担。
3)客户端性能:为了保证客户端使用最新权限,且客户端无缓存数据可用来对比权限是否发生改变的情况下,客户端每次得到请求响应,都需要使用响应中的全部完整的权限数据进行客户端的权限渲染(包括菜单权限和按钮权限),极大的增加了客户端的压力。很多时候,权限没有发生变化,依然需要进行权限重新渲染。这种渲染很影响前端性能,没有必要。
4)客户端技术:当前前端主流框架Vue、React等基于JS语言的框架,其状态管理库都是将数据存在内存当中,每次刷新数据会消失。需要使用缓存技术,将数据缓存到本地才能避免刷新数据消失出现报错或者空白页等现象。且本地没有缓存的第一权限时间,无法进行权限对比(不论是对比全部权限数据还是对比权限时间,都需要进行缓存)。
由于相关技术中,具有客户端缓存,用户可以非法恶意篡改客户端本地缓存,进而避免权限更新,造成安全问题。
相关技术实现前端权限控制时,如果用户角色对应的权限发生变化,需以硬编码的方式重写前端代码,并且无法及时在前端系统同更新用户最新菜单权限和按钮权限,需要用户手动操作。本地缓存在动态菜单中是必须的,但用户可以通过恶意篡改本地缓存而跳过权限更新,对系统安全造成一定影响,用户体验感较差,效率较低。
鉴于以上技术问题中的至少一项,本公开提供了一种权限控制方法和系统、客户端、服务端和存储介质,下面通过具体实施例对本公开进行说明。
图1为本公开权限控制方法一些实施例的示意图。优选的,本实施例可由本公开权限控制系统或本公开客户端执行。该方法包括步骤11-步骤15中的至少一个步骤,其中:
步骤11,在用户登录系统的情况下,从服务端获取用户基本信息和权限信息,其中,权限信息包括第一权限时间。
在本公开的一些实施例中,所述服务端为后端、服务器。
在本公开的一些实施例中,所述客户端为前端、用户终端。
在本公开的一些实施例中,所述权限信息还可以包括菜单权限数据和按钮权限数据。
在本公开的一些实施例中,所述系统为信息系统。
在本公开的一些实施例中,用户基本信息包括用户ID、用户角色、用户成功登Token令牌等。
图2为本公开一些实施例中基于RBAC的权限控制系统的关系映射图。如图2所示,通过用户关联角色、角色关联权限的方法来间接地赋予用户权限,从而达到用户和权限解耦的目的。如图2所示,为用户分配角色,为角色分配相应的权限,其中,权限包括菜单权限和按钮权限。
步骤12,在客户端缓存权限信息。
在本公开的一些实施例中,步骤12可以包括:在客户端缓存用户基本信息和权限信息。
在本公开的一些实施例中,步骤12可以包括:可在浏览器sessionStorage(会话存储)中进行缓存,对于基于JS的前端框架,可同步将信息存储进状态管理库中。
步骤13,根据权限信息渲染客户端界面。
在本公开的一些实施例中,步骤13可以包括步骤131-步骤133中的至少一个步骤,其中:
步骤131,将菜单权限数据和按钮权限数据进行数据格式转换,包括:将菜单权限数据转换为动态路由数据。
步骤132,将动态路由数据和本地默认路由数据合并为总权限路由数据。
步骤133,循环遍历总权限路由数据,生成菜单栏。
步骤134,采用原型挂载方式判断按钮权限数据中是否存在按钮所需要的权限,动态渲染权限按钮。
步骤14,向服务端发送操作请求,其中,所示操作请求包括第一权限时间,以便服务端比较第一权限时间和数据库中的第二权限时间。
在本公开的一些实施例中,所述操作请求可以为增加、删除、修改、查询等操作请求。
步骤15,接收服务端返回的响应数据,其中,所述响应数据包括权限时间字段。
步骤16,根据所述响应数据对页面进行渲染。
在本公开的一些实施例中,步骤16可以包括步骤161-步骤166中的至少一个步骤,其中:
步骤161,在所述权限时间字段为已修改(Modified)的情况下,清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染,其中,所述响应数据还包括新的权限信息,服务端在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端。
在本公开的一些实施例中,步骤161中,所述采用新的权限信息对客户端界面进行重新渲染的步骤包括所述采用新的权限信息执行步骤13。
在本公开的一些实施例中,所述新的权限信息包括新的第一权限时间、新的菜单权限数据和新的按钮权限数据。
在本公开的一些实施例中在第一权限时间和数据库中的第二权限时间不相同的情况下,所述响应数据不包括用户请求数据的原因在于:权限更新后,用户请求数据涉及的权限可能发生了变化,例如用户权限变小,则用户不具备请求改数据的权限,因此所述响应数据不包括用户请求数据。
步骤162,在所述权限时间字段为空的情况下,判定权限信息未更新,根据用户请求数据对客户端界面进行渲染,其中,所述响应数据还包括用户请求数据,服务端在第一权限时间和数据库中的第二权限时间相同的情况下,返回响应数据到客户端。
在本公开的一些实施例中,所述权限控制方法还可以包括:接收用户(例如上级用户)选择的新增角色的菜单权限和按钮权限;将用户选择的新增角色的菜单权限和按钮权限发送到服务端,以便服务端进行权限配置,并基于配置时间,生成第二权限时间。
在本公开的一些实施例中,所述权限控制方法还可以包括:向服务端发送角色权限修改请求,以便服务端进行角色权限修改,并根据修改权限时间更新第二权限时间。
本公开上述实施例中,信息系统的服务端可以根据用户权限配置时间生成权限时间值等数据,用户登录后返回权限数据等,系统可以根据用户权限数据动态渲染前端界面。角色权限改变时,权限生成模块生成新的权限时间值,通过服务端权限校验模块对比第一权限时间和第二权限时间,适时反馈最新权限数据,前端可及时、无感更新权限数据,并进行动态渲染。
本公开上述实施例权限变化时无需开发人员手动修改代码,无需用户手动操作系统、安全性高、性能好,避免用户恶意篡改权限。
本公开上述实施例可以应用于基于前后端分离的Web应用中,需要对信息系统进行权限控制的场景。本公开上述实施例中,用户只能对其角色所具有权限的页面、按钮以及数据进行访问以及操作,用户不能恶意控制权限。
图3为本公开权限控制方法另一些实施例的示意图。优选的,本实施例可由本公开权限控制系统或本公开客户端执行。该方法包括步骤30-步骤39中的至少一个步骤,其中:
步骤30,用户从客户端登录信息系统。
步骤31,判断缓存中是否有权限信息。在缓存中无权限信息的情况下,执行步骤32;否则,在缓存中无权限信息的情况下,执行步骤35。
步骤32,获取用户基本信息。
在本公开的一些实施例中,用户基本信息可以包括用户ID、用户角色、用户成功登Token令牌等。
步骤33,获取权限信息。
在本公开的一些实施例中,所述权限信息为用户角色当前权限信息。
在本公开的一些实施例中,所述权限信息为用户角色权限信息。
在本公开的一些实施例中,权限信息包括:用户菜单权限数据、按钮权限数据以及第一权限时间。
步骤34,在前端(客户端)对权限信息进行缓存。
在本公开的一些实施例中,步骤34可以包括:在客户端缓存用户基本信息和权限信息。
在本公开的一些实施例中,步骤34可以包括:可在浏览器sessionStorage中进行缓存,对于基于JS的前端框架,可同步将信息存储进状态管理库中。
步骤35,根据权限信息渲染客户端界面
在本公开的一些实施例中,步骤35可以包括:根据权限信息,渲染前端界面。只展示用户具有权限的页面、按钮以及数据。
在本公开的一些实施例中,步骤35可以包括:图1实施例的步骤131-步骤133中的至少一个步骤。
在本公开的一些实施例中,步骤35可以包括:图4实施例的步骤382-步骤388中的至少一个步骤。
在本公开的一些实施例中,步骤35可以包括:菜单权限渲染:合并权限路由与默认路由,生成动态路由进行渲染;按钮权限渲染:设置指令,判断此按钮所需权限是否授权。
步骤36,客户端向服务端发送操作请求,其中,所述操作请求包括第一权限时间,以便服务端比较第一权限时间和数据库中的第二权限时间。
在本公开的一些实施例中,如图3所示,步骤36可以在用户角色权限改变的情况下执行。
在本公开的另一些实施例中,步骤36可以在用户角色权限未改变的情况下执行。
在本公开的一些实施例中,所述操作请求可以为增加、删除、修改、查询等操作请求。
在本公开的一些实施例中,步骤36可以包括:用户可在此权限下进行相应操作,发送操作请求至服务端。
在本公开的一些实施例中,服务端权限校验模块对比业务请求中第一权限时间和数据库中的第二权限时间,分情况返回具体数据至客户端。具体的:数据库中保存当前最新的权限时间为第二权限时间,将此第二权限时间与用户请求中的第一权限时间进行对比。若权限时间值相同,则当前用户权限是最新权限,服务端返回响应数据包括:用户请求数据、权限时间字段置为空。若第一权限时间和第二权限时间不相同,则服务端返回响应数据为:用户最新权限数据、权限时间值设置为“Modified”。
步骤37,客户端接收服务端返回的响应数据;客户端界面渲染模块检测响应数据中权限时间字段是否为“Modified”,并进行相应渲染处理。具体步骤为步骤38和步骤39。
步骤38,若为“Modified”,则此时用户权限发生变化,客户端清空本地缓存的权限信息,使用响应数据中的权限数据(新的权限信息)渲染前端界面等流程。
步骤39,若不为“Modified”,则此时用户权限未发生变化,使用响应数据中的业务数据(用户请求数据)进行渲染。
针对相关技术提到的技术问题,本公开上述实施例提出一种前后端分离的信息系统权限控制方法。本公开上述实施例的权限控制方案中,用户登陆系统后获取当前用户的权限信息,依据权限信息渲染前端,仅展示用户当前具有权限的菜单和按钮等前端元素。在此之后,如果用户权限被改变,用户在进行操作请求时,可直接获取到最新的权限数据,前端就可以直接依据最新权限信息进行渲染,不必进行额外的用户权限请求,用户依据最新权限进行操作,不必强制退出系统。用户也无法通过恶意篡改浏览器缓存值而控制避免权限更新。开发人员也不必手动修改代码。
本公开上述实施例解决了信息系统前端无法及时无感更新用户权限、用户可以通过恶意操作避免权限更新而破坏权限限制的问题,提升了体统的安全性、提升了整体性能及用户使用体验感。
图4为本公开权限控制方法又一些实施例的示意图。优选的,本实施例可由本公开权限控制系统或本公开客户端执行。图4实施例的方法(例如图1实施例的步骤15和16)可以包括步骤371-步骤389、步骤39中的至少一个步骤,其中,图3实施例的步骤37可以包括图4实施例的步骤371至步骤372中的至少一个步骤,图3实施例的步骤38可以包括图4实施例的步骤381至步骤388中的至少一个步骤,图3实施例的步骤39与图4实施例的步骤39相同或类似,其中:
步骤371,接收服务端返回的响应数据,其中,所述响应数据包括权限时间字段。
步骤372,判断响应数据中权限时间字段是否为“Modified”。在权限时间字段为“Modified”的情况下,执行步骤381;否则,在权限时间字段不是“Modified”的情况下,执行步骤39。
步骤381,若为“Modified”,则此时用户权限发生变化,客户端清空本地缓存的权限信息,使用响应数据中的权限数据(新的权限信息)渲染前端界面。
步骤382,将菜单权限数据和按钮权限数据进行数据格式转换。
在本公开的一些实施例中,步骤382可以包括:将获取到的权限数据进行数据格式转换:对于菜单权限数据,转换为权限路由数据permission_router。对于按钮权限数据,将按钮权限数据转换为permission_btn数组。
步骤383,对菜单权限数据进行遍历递归,转换为符合系统要求的动态路由数据。
在本公开的一些实施例中,步骤383可以包括:通过filterAsyncRouter()方法,采用遍历递归的方式,将权限数据字符串转为符合系统要求的组件对象,作为下一步需要的动态路由数据。
步骤384,将动态路由数据和本地默认路由数据合并为总权限路由数据。
在本公开的一些实施例中,步骤384可以包括:完善路由。
在本公开的一些实施例中,步骤384可以包括:使用路由拦截器router.beforeEach(),在每次跳转时进行判断本地是否存在路由数据。将处理过的动态路由数据和本地提前设置好的一些默认路由数据,通过addRoutes()方法合并为最终的权限路由数据permission_router,同时存储在相关状态管理库中。
步骤385,循环遍历总权限路由数据,生成菜单栏。
在本公开的一些实施例中,步骤385可以包括:菜单渲染。
在本公开的一些实施例中,步骤385可以包括:将permission_router的数据通过基于JS的前端框架,进行循环遍历,可动态渲染出来。可以根据自定义的路由需求,增加参数进行判断。
步骤386,采用原型挂载方式判断按钮权限数据中是否存在按钮所需要的权限。
在本公开的一些实施例中,步骤386可以包括:增加$_has方法,此方法用于判断permission_btn数据中是否存在按钮所需要的权限,并把$_has方法挂载到原型上进行之后的调用。
步骤387,设置v-has指令,在inserted阶段挂载,并添加到需要鉴权的按钮上。
在本公开的一些实施例中,步骤387可以包括:创建directive.js文件,使用.directive()创建v-has指令,在inserted子钩子时调用挂载到原型上的$_has方法。将directive.js文件引入主文件后可全局使用v-has指令。在需要权限控制的按钮上增加v-has指令即可根据permission_btn数据展示相应权限按钮。
步骤388,动态渲染按钮。
步骤39,若不为“Modified”,则此时用户权限未发生变化,使用响应数据中的业务数据(用户请求数据)进行渲染。
本公开在客户端进行权限缓存的作用在于:1)避免每次请求都调用权限接口获取权限数据,减少网络请求压力;2)避免服务端多次读取、拼装用户权限数据,减轻服务端压力;3)避免多次无必要的前端渲染,减轻渲染压力,减轻客户端压力。
发明人通过研究发现:不在客户端进行缓存,理论上可以避免权限不准确的问题,但是需要以严重影响服务端性能、影响客户端性能、影响网络性能、造成用户界面白屏或报错为代价。由此可见客户端进行权限缓存的必要性。因为上述性能等原因无法避免本地缓存,由此采用本公开可以解决缓存带来的问题。
本公开需要结合服务端对比和客户端缓存,缺一不可。在服务端进行对比,可以避免恶意篡改客户端本地缓存,进而跳过权限更新。
本公开上述实施例的出发点为可以动态设置权限,与当前以硬编码写死用户角色权限的方法出发点不同。
图5为本公开权限控制方法另一些实施例的示意图。优选的,本实施例可由本公开权限控制系统或本公开服务端执行。该方法包括步骤51-步骤53中的至少一个步骤,其中:
步骤51,接收客户端发送的操作请求,其中,所示操作请求包括第一权限时间,第一权限时间包括在权限信息中,所述用户基本信息和权限信息为在用户登录系统的情况下从服务端获取、并缓存在客户端的,所述权限信息,用于渲染客户端界面;
在本公开的一些实施例中,所述权限信息包括第一权限时间、菜单权限数据和按钮权限数据。
步骤52,比较第一权限时间和数据库中的第二权限时间;
步骤53,根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据,以便客户端根据所述响应数据对页面进行渲染。
在本公开的一些实施例中,步骤53可以包括步骤531和步骤532中的至少一个步骤,其中:
步骤531,在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端,其中,所述响应数据包括用户的新权限信息和权限时间字段,以便客户端清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染。
步骤532,在第一权限时间和数据库中的第二权限时间相同的情况下,设置权限时间字段设置为空,返回响应数据到客户端,其中,所述响应数据包括用户请求数据和权限时间字段,以便客户端根据用户请求数据对客户端界面进行渲染。
本公开上述实施例提出一种权限控制方法,通过增加了权限时间,实现前端权限控制的及时更新。权限生成模块根据角色权限配置时间生成权限时间,角色的权限被修改时,同步更新权限时间。
本公开上述实施例服务端接收到客户端请求后,提取第一权限时间,与数据库第二权限时间进行对比,控制是否直接返回最新权限
本公开上述实施例客户端根据返回数据中”Modified”值,判断是否依据最新权限信息进行渲染前端界面。
本公开上述实施例以记录权限配置时间的方法,代替完整权限数据,提升了性能。
本公开上述实施例的前端无需再次发送获取权限请求,就可以及时获取到最新权限。
本公开上述实施例服务端进行权限时间值对比,规避客户端可恶意篡改本地缓存值,而导致不及时的权限更新。
本公开上述实施例中,用户可无感依据最新权限进行操作,不必强制退出系统。
本公开上述实施例权限改变时,开发人员不必修改代码。
图6为本公开权限控制方法又一些实施例的示意图。优选的,本实施例可由本公开权限控制系统或本公开服务端执行。该方法包括步骤61-步骤65中的至少一个步骤,其中:
步骤61,新增一个角色,在权限配置模块,可视化勾选当前角色所拥有的菜单权限和按钮权限。基于权限的配置时间,生成第二权限时间。
在本公开的一些实施例中,步骤61可以包括:接收客户端发送的、用户选择的新增角色的菜单权限和按钮权限;根据用户选择的新增角色的菜单权限和按钮权限,进行权限配置;基于配置时间,生成第二权限时间,并存储在数据库中。
在本公开的一些实施例中,步骤61可以包括:当新增一个角色在权限配置模块中配置权限后,权限生成模块需要根据配置权限的时间生成第二权限时间,存储在数据库中。
步骤62,当角色的权限被修改后,需要依据修改权限时间更新第二权限时间,并更新到数据库中。
在本公开的一些实施例中,步骤62可以包括:接收客户端发送的角色权限修改请求;根据所述角色权限修改请求进行角色权限修改;根据修改权限时间更新第二权限时间。
步骤63,服务端权限校验模块接收到客户端请求后,将请求中携带的第一权限时间和数据库第二权限时间相比较。
步骤64,若第一权限时间和第二权限时间相同,则证明权限没有改变,当前用户权限是最新权限,服务端返回响应数据包括:用户请求数据(被请求的数据)、权限时间字段置为空。
步骤65,若第一权限时间和第二权限时间不相同,则证明权限发生改变,权限数据有更新,服务端返回响应数据为:用户最新权限数据、权限时间段设置为“Modified”。
本公开上述实施例在服务端进行对比校验,用户即使恶意篡改客户端第一权限数据,也无法阻止权限更新
本公开上述实施例使用权限配置或修改时间,代替完成权限数据进行对比。本公开上述实施例生成权限时间值性能好、无需复杂计算。
本公开上述实施例中增加权限时间,即权限的最新修改时间,帮助进行权限控制中的权限更新校验。本公开上述实施例的权限时间生成快速,对比容易,极大降低对服务端的压力。
本公开上述实施例同时在服务端权限校验模块对比权限时间,可以有效大幅度规避在客户端进行对比时,通过浏览器,本地缓存权限被恶意篡改为服务器响应的权限,使系统认为权限没有变化,跳过权限更新,而带来安全问题。
按照本公开上述实施例的所述方法,可以大幅度减少对比权限过程中的系统计算量,并且使实现更新权限所需要的网络请求次数降到最低,大幅度提升性能。
图7为本公开权限控制方法又一些实施例的示意图。优选的,本实施例可由本公开权限控制系统执行。或本公开服务端该方法包括步骤701-步骤716中的至少一个步骤,其中:
步骤701至步骤703是为新角色配置权限的步骤。
步骤701,新增用户并配置角色权限。
在本公开的一些实施例中,步骤701可以包括:客户端发送用户选择的新增角色的菜单权限和按钮权限,到服务端。
步骤702,服务端生成第二权限时间,并保存。
在本公开的一些实施例中,步骤702可以包括:服务端根据用户选择的新增角色的菜单权限和按钮权限,进行权限配置;基于配置时间,生成第二权限时间,并存储在数据库中。
步骤703,服务端返回配置成功消息给客户端。
步骤704至步骤706是为修改权限的步骤。
步骤704,客户端向服务端发送用户角色权限修改请求。
步骤705,服务端根据修改权限时间更新第二权限时间。
在本公开的一些实施例中,步骤705可以包括:服务端根据所述角色权限修改请求进行角色权限修改;根据修改权限时间更新第二权限时间。
步骤706,服务端返回修改成功消息给客户端。
步骤707,客户端向服务端发送用户登录请求,从服务端获取用户基本信息和权限信息。
在本公开的一些实施例中,所述权限信息可以包括第一权限时间、菜单权限数据和按钮权限数据。
在本公开的一些实施例中,用户基本信息包括用户ID、用户角色、用户成功登Token令牌等。
步骤708,服务端向客户端返回用户基本信息和权限信息。
步骤709,在客户端缓存用户基本信息和权限信息。
步骤710,客户端根据权限信息渲染客户端界面。
在本公开的一些实施例中,步骤710可以包括:图1实施例的步骤131-步骤133中的至少一个步骤。
在本公开的一些实施例中,步骤710可以包括:图4实施例的步骤382-步骤388中的至少一个步骤。
步骤711,客户端向服务端发送操作请求,其中,所述操作请求包括第一权限时间和业务接口所需要的其它字段,第一权限时间为客户端缓存中的权限时间,业务接口所需要的其它字段为增加、删除、修改、查询等操作请求所需要的其它字段。
步骤712,服务端比较第一权限时间和数据库中的第二权限时间,判断是否相同。
步骤713,服务端在第一权限时间和数据库中的第二权限时间相同的情况下,设置权限时间字段设置为空,返回响应数据到客户端,其中,所述响应数据包括用户请求数据和权限时间字段。
步骤714,客户端根据权限时间字段设置为空,判断用户权限未变化,并根据响应数据中的用户请求数据对客户端界面进行渲染。
步骤715,服务端在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端,其中,所述响应数据包括用户的新权限信息和权限时间字段。
步骤716,客户端服务端根据权限时间字段为已修改,判定用户权限变化,清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染。
本公开上述实施例减轻了服务端压力,提升了服务端性能:以权限配置时间为标志,代表权限数据进行对比。本公开上述实施例无需对权限数据进行复杂的哈希变换。
本公开上述实施例提升了安全性能:直接在服务端进行第一权限时间和第二权限时间的对比。本公开上述实施例在服务器进行可以提升权限对比的安全性。由于客户端缓存是不能避免的,用户可能恶意篡改浏览器的权限时间值,进而跳过系统的权限限制,避免权限更新。服务端对比可以解决这个问题。
本公开上述实施例减轻了网络压力:如果权限发生变化,服务端直接返回最新权限数据,客户端无需再次发送网络请求,获取权限,有效减少了网络请求次数,减轻了网络压力。
本公开上述实施例增加信息系统权限控制的安全性:有效严格依据最新权限限制用户操作。若用户已登录,使用系统中途被上级用户修改当前用户角色的权限,限制删减了部分权限,并希望此修改立即生效。通过此公开所述方法,信息系统前端可及时更新用户权限,最大限度保证权限控制的可靠性、安全性。
本公开上述实施例减轻了用户操作复杂性:不必像相关技术系统一样要求用户退出、重新登录系统才能使用最新权限。用户在本申请所述方法中可无感操作,及时使用最新权限。尤其是扩展了用户角色权限时,本公开的优点更为突出。
本公开上述实施例减少了开发人员工作量:角色权限发生变化时,开发人员无需手动修改代码。
下面通过具体实施例对本公开进行说明。
第一类型实施例
在本类型实施例中为配置用户于权限的关系。
依据本公开中的权限管理方法,系统中新增用户时,为用户选择用户对应的角色,角色需要配置的权限。修改角色权限可以通过页面可视化勾选的方式,在权限配置模块,选择用户的菜单权限以及按钮权限。
同时在权限配置模块中还包括菜单数据管理和按钮数据管理单元。在这两个数据管理单元中,配置相关权限的元数据,包括如路由名称name、路由组件component、路由图标icon、路由路径path等信息,按钮的value名称等信息。
第二类型实施例
在本类型实施例为此权限控制方法中前端实现流程。可以使用任意基于JS的前端框架实现,本裂隙实施例以Vue框架为例。
用户通过账号密码校验,登录系统。判断缓存或者状态管理库中是否存在用户基本信息以及用户权限信息,若不存在,则通过接口获取用户基本信息和用户权限信息,用户权限信息包括用户菜单权限数据、按钮权限数据以及权限时间。
将获取到的权限信息中的路由进行数据格式转换,通过filterAsyncRouter()方法,采用遍历递归的方式,将权限数据字符串转为符合系统要求的组件对象,作为下一步需要的动态路由数据。对于按钮权限数据,将按钮权限数据转换为permission_btn数组。使用路由拦截器router.beforeEach(),在每次跳转时进行判断本地是否存在路由数据。将处理过的动态路由数据和本地提前设置好的一些默认路由数据,通过addRoutes()方法合并为最终的权限路由数据permission_router,同时存储在相关状态管理库中。
将permission_router的数据通过基于JS的前端框架,进行循环遍历,可动态渲染出来。可以根据自定义的路由需求,增加参数进行判断。增加$_has方法,此方法用于判断permission_btn数据中是否存在按钮所需要的权限,并把$_has方法挂载到原型上进行之后的调用。创建directive.js文件,使用.directive()创建v-has指令,在inserted子钩子时调用挂载到原型上的$_has方法。将directive.js文件引入主文件后可全局使用v-has指令。在需要权限控制的按钮上增加v-has指令即可根据permission_btn数据展示相应权限按钮。用户进行网络请求时,携带本地缓存或状态管理库中的第一权限时间发送至服务端。
客户端界面渲染模块判断权限是否发生变化,并进行相应渲染处理。若响应中权限时间字段为“Modified”,则用户权限发生变化,使用响应中的权限数据重新渲染界面。否则用户权限未变化,完成用户请求渲染。
第三类型实施例
本类型实施例为权限控制方法中客户端实现方式。
新增一个角色时,在权限配置模块,勾选当前角色所拥有的菜单权限和按钮权限。同时依据以上权限数据,生成基于此权限的配置时间生成权限时间,将权限信息和权限时间存储至数据库。
当角色的权限被修改后,需要依据最新的权限配置时间生成新的权限时间,并更新到数据库中。
服务端接收到客户端请求后,将请求中携带的第一权限时间和数据库中第二权限时间比较。
a)若两者相同,则证明权限没有改变,服务端返回被请求的数据、将权限时间字段置为空。
b)若两者不同,则证明权限发生改变,服务端返回最
新的权限数据,并将权限时间字段设置为“Modified”。
第四类型实施例
本类型实施例为对比第一权限时间和第二权限时间。
本公开中,新增一个角色时,在权限配置模块,勾选当前角色所拥有的菜单权限和按钮权限。同时依据以上权限数据,生成基于此权限的配置时间生成权限时间,将权限信息和权限时间存储至数据库。可以根据项目需求,使用特定方法或数据库,生成进行此操作的13位时间戳“1663653983001”,将此权限时间以密文形式返回给客户端,加密方式不做限制,示例传输的字符串为“C86A48C43A47C335F80AAA278C2C6C8B”。客户端进行缓存,并将此第一权限时间携带到之后的网络请求中。
本公开中,若此时用户权限发生改变,在服务端生成最新进行此操作的13位时间戳“1663671983000”作为第二权限时间存储加密,加密方式不做限制,示例存储的第二权限时间为“0F55658BACD51F231962450AAEC84497”。服务端接收到客户端请求后,将第一权限时间“C86A48C43A47C335F80AAA278C2C6C8B”与第二权限时间“0F55658BACD51F231962450AAEC84497”对比,发现两者不相同,则证明权限发生改变,服务端返回最新的权限数据,并将权限时间字段设置为“Modified”。
本公开上述实施例使用权限设置时间值进行比较,较之前相关技术所用的哈希值(SHA256或者MD5)而言,无需服务器另行计算,性能和效率有所提升,减轻服务端压力。
本公开上述实施例中,比较第一权限时间和第二权限时间在服务端进行,可以尽量规避因在客户端进行比较,用户恶意篡改权限时间而使对比结果不准确,从而使系统不进行权限更新,造成安全影响,服务器进行校验对比的可靠性优于客户端进行校验对比,同时让客户端专注于渲染界面。
本公开上述实施例客户端可直接获取最新权限信息,无需重新发送请求。客户端接收到的响应后通过权限时间字段确定权限变更,由于权限时间对比发生在服务端,所以客户端无需重新向服务端发请求获取权限,可以直接根据服务端响应中的值进行重新渲染,较相关技术减少了网络请求次数。
图8为本公开客户端一些实施例的示意图。如图8所示,本公开客户端可以包括信息获取模块81、信息缓存模块82、界面渲染模块83、操作请求发送模块84和响应数据接收模块85,其中:
信息获取模块81,被配置为在用户登录系统的情况下,从服务端获取用户基本信息和权限信息,其中,权限信息包括第一权限时间。
在本公开的一些实施例中,所述权限信息还包括菜单权限数据和按钮权限数据。
信息缓存模块82,被配置为在客户端缓存权限信息。
界面渲染模块83,被配置为根据权限信息渲染客户端界面。
在本公开的一些实施例中,界面渲染模块83,累哦被配置为将菜单权限数据和按钮权限数据进行数据格式转换,包括:将菜单权限数据转换为动态路由数据;将动态路由数据和本地默认路由数据合并为总权限路由数据;循环遍历总权限路由数据,生成菜单栏;采用原型挂载方式判断按钮权限数据中是否存在按钮所需要的权限,动态渲染权限按钮。
操作请求发送模块84,被配置为向服务端发送操作请求,其中,所示操作请求包括第一权限时间,以便服务端比较第一权限时间和数据库中的第二权限时间。
响应数据接收模块85,被配置为接收服务端返回的响应数据,其中,所述响应数据包括权限时间字段。
在本公开的一些实施例中,界面渲染模块83,还被配置为根据所述响应数据对页面进行渲染。
在本公开的一些实施例中,界面渲染模块83,可以被配置为在客户端获取用户权限信息后,依据服务端响应的数据中“Modified”值,判断是否使用响应中的权限数据重新渲染界面,仅为用户展示有权限的菜单及操作。
在本公开的一些实施例中,界面渲染模块83,可以被配置为在所述权限时间字段为已修改的情况下,清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染,其中,所述响应数据还包括新的权限信息,服务端在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端。
在本公开的一些实施例中,界面渲染模块83,可以被配置为在所述权限时间字段为空的情况下,判定权限信息未更新,根据用户请求数据对客户端界面进行渲染,其中,所述响应数据还包括用户请求数据,服务端在第一权限时间和数据库中的第二权限时间相同的情况下,返回响应数据到客户端。
在本公开的一些实施例中,如图8所示,所述客户端还可以包括权限配置请求模块86,其中:
权限配置请求模块86,被配置为接收用户选择的新增角色的菜单权限和按钮权限;将用户选择的新增角色的菜单权限和按钮权限发送到服务端,以便服务端进行权限配置,并基于配置时间,生成第二权限时间。
在本公开的一些实施例中,如图8所示,所述客户端还可以包括权限修改请求模块87,其中:
权限修改请求模块87,被配置为向服务端发送角色权限修改请求,以便服务端进行角色权限修改,并根据修改权限时间更新第二权限时间。
在本公开的一些实施例中,本公开客户端可以被配置为执行实现如上述任一实施例(例如图1、图3或图4实施例)所述的权限控制方法。
本公开上述实施例中,用户权限更新时,前端更新用户权限的方法,使用户无法恶意篡改数据避免更新、用户无需退出系统、客户端无需重新发送请求获取权限、用权限时间值代替整体权限数据。
本公开上述实施例以权限配置修改时间表示完整权限信息。
本公开上述实施例可以根据当前发送至服务端的网络请求中携带的权限时间值,判断用户权限是否发生变化。
本公开上述实施例中,客户端权限信息为第一权限时间,服务端最新权限信息为第二权限时间,在服务端权限校验模块进行第一权限时间和第二权限时间的对比,从而解决了用户可以通过浏览器恶意篡改本地缓存,进而绕过权限更新,导致的在客户端对比不安全的问题。
本公开上述实施例中,如果第一权限时间和第二权限时间不同,服务端直接返回最新权限数据到客户端。
本公开上述实施例客户端界面渲染模块可以根据响应字段中权限时间字段中的“Modified”字段,使用最新权限数据重新渲染客户端界面。
本公开上述实施例中的路由渲染:将默认路由与权限路由相结合生成动态路由。
本公开上述实施例中的按钮渲染:通过原型挂载方法,判断按钮。
图9为本公开客户端另一些实施例的结构示意图。如图9所示,本公开客户端可以包括客户端存储器91和客户端处理器92。
客户端存储器91用于存储指令,客户端处理器92耦合到客户端存储器91,客户端处理器92被配置为基于存储器存储的指令执行实现如上述任一实施例(例如图1、图3或图4实施例)所述权限控制方法。
如图9所示,该客户端还包括客户端通信接口93,用于与其它设备进行信息交互。同时,该客户端还包括客户端总线94,客户端处理器92、客户端通信接口93、以及客户端存储器91通过客户端总线94完成相互间的通信。
客户端存储器91可以包含高速RAM存储器,也可还包括非易失性存储器(Non-volatile Memory),例如至少一个磁盘存储器。客户端存储器91也可以是存储器阵列。客户端存储器91还可能被分块,并且块可按一定的规则组合成虚拟卷。
此外,客户端处理器92可以是一个中央处理器CPU,或者可以是专用集成电路ASIC,或是被配置成实施本公开实施例的一个或多个集成电路。
本公开上述实施例无需用户手动操作、无需修改前端代码、前端不用额外发送请求获取用户权限、使用权限时间代替权限数据可减少服务端性能消耗、避免了非法用户拦截最新权限信息并篡改客户端数据而跳过权限更新限制、及时依据最新权限渲染前端系统、提升了安全性。
图10为本公开服务端一些实施例的示意图。如图10所示,本公开服务端可以包括操作请求接收模块101和权限校验模块102,其中:
操作请求接收模块101,被配置为接收客户端发送的操作请求,其中,所示操作请求包括第一权限时间,第一权限时间包括在权限信息中,所述用户基本信息和权限信息为在用户登录系统的情况下从服务端获取、并缓存在客户端的,所述权限信息,用于渲染客户端界面。
在本公开的一些实施例中,所述权限信息还可以包括菜单权限数据和按钮权限数据。
权限校验模块102,被配置为比较第一权限时间和数据库中的第二权限时间;并根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据,以便客户端根据所述响应数据对页面进行渲染。
在本公开的一些实施例中,权限校验模块102,可以被配置为对比第一权限时间和第二权限时间,并返回相应数据或用户最新权限数据到客户端。
在本公开的一些实施例中,权限校验模块102,可以被配置为在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端,其中,所述响应数据包括用户的新权限信息和权限时间字段,以便客户端清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染。
在本公开的一些实施例中,权限校验模块102,可以被配置为在第一权限时间和数据库中的第二权限时间相同的情况下,设置权限时间字段设置为空,返回响应数据到客户端,其中,所述响应数据包括用户请求数据和权限时间字段,以便客户端根据用户请求数据对客户端界面进行渲染。
在本公开的一些实施例中,如图10所示,本公开服务端可以包括权限配置模块103和权限生成模块104,其中:
权限配置模块103,被配置为接收客户端发送的、用户选择的新增角色的菜单权限和按钮权限;根据用户选择的新增角色的菜单权限和按钮权限,进行权限配置。
权限生成模块104,被配置为基于配置时间,生成第二权限时间,并存储在数据库中。
在本公开的一些实施例中,权限配置模块103,还可以被配置为接收客户端发送的角色权限修改请求;根据所述角色权限修改请求进行角色权限修改。
在本公开的一些实施例中,权限生成模块104,还可以被配置为根据修改权限时间更新第二权限时间。
在本公开的一些实施例中,权限配置模块103,还可以用于配置角色对应的权限,包括菜单权限和按钮权限。配置后会形成角色-权限表。同时,在权限配置模块中还包括菜单数据管理和按钮数据管理单元。在这两个数据管理单元中,配置相关权限的元数据,包括如路由名称name、路由组件component、路由图标icon、路由路径path等信息,按钮的value名称等信息。
在本公开的一些实施例中,权限生成模块104,还可以被配置为生成角色权限的权限时间,包括第一权限时间和第二权限时间。每次配置或修改角色权限后,通过此模块更新权限信息对应于数据库的第二权限时间。
在本公开的一些实施例中,本公开服务端可以被配置为执行实现如上述任一实施例(例如图5或图6实施例)所述的权限控制方法。
本公开上述实施例无需用户退出系统或进行其他手动操作,用户无感操作,权限控制系统可以依据最新权限进行渲染和控制,提升用户体验。
本公开上述实施例的权限控制系统可以及时依据最新权限进行限制,增加系统安全性。
本公开上述实施例不需要每次修改权限都手动修改代码,无需进行硬编码,减少开发人员工作量。
本公开上述实施例不需要多次维持或发送无用请求,无需保持长链接消耗资源,对性能进行优化。
本公开上述实施例中,如果权限校验模块发现权限变化,客户端不用再次发送额外获取权限请求。
客户端缓存是必要的,本公开上述实施例可以解决用户恶意篡改本地缓存而跳过权限更新缩造成的安全问题。
图11为本公开服务端另一些实施例的结构示意图。如图11所示,本公开服务端可以包括服务端存储器111和服务端处理器112。
服务端存储器111用于存储指令,服务端处理器112耦合到服务端存储器111,服务端处理器112被配置为基于存储器存储的指令执行实现如上述任一实施例(例如图5或图6实施例)所述的权限控制方法。
如图11所示,该服务端还包括服务端通信接口113,用于与其它设备进行信息交互。同时,该服务端还包括服务端总线114,服务端处理器112、服务端通信接口113、以及服务端存储器111通过服务端总线114完成相互间的通信。
服务端存储器111可以包含高速RAM存储器,也可还包括非易失性存储器(Non-volatile Memory),例如至少一个磁盘存储器。服务端存储器111也可以是存储器阵列。服务端存储器111还可能被分块,并且块可按一定的规则组合成虚拟卷。
此外,服务端处理器112可以是一个中央处理器CPU,或者可以是专用集成电路ASIC,或是被配置成实施本公开实施例的一个或多个集成电路。
图7还给出了本公开权限控制系统一些实施例的示意图。如图7所示,本公开权限控制系统可以包括客户端和服务端,其中:
客户端可以为如上述任一实施例(例如图8或图9实施例)所述的客户端。
服务端可以为如上述任一实施例(例如图10或图11实施例)所述的服务端。
本公开上述实施例提供了一种前后端分离的信息系统权限控制方法、装置及系统。
本公开上述实施例属于IT(Information Technology,信息技术)与计算机软件开发领域。
本公开上述实施例提出一种前后端分离的信息系统权限控制方法、和系统,通过前端可视化配置角色权限、界面动态渲染授权菜单和按钮、增加权限时间值、增加对比分析模块等方式,以较优性能实现前端无感、及时更新权限并进行界面渲染,提升了系统安全性和使用便捷性,权限变更时无需开发人员进代码修改,避免了用户恶意篡改本地缓存信息而跳过权限更新所造成的的安全问题。
本公开上述实施例可以应用于所有的数字化信息管理系统,不限定行业,都可以应用此权限控制方法进行权限控制。
本公开上述实施例提升了安全性,增加了开发效率,提升了用户使用感。
本公开上述实施例有效提升了系统安全性,可以及时依据最新权限渲染前端,增强了信息系统权限控制力度。
本公开上述实施例减少了开发人员工作量,不必硬编码。
本公开上述实施例提升了系统前端渲染性能、优化网络请求。
本公开上述实施例减轻了服务端压力,提升了性能。
根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例(例如图1至图7任一实施例)所述权限控制方法。
在本公开的一些实施例中,所述计算机可读存储介质可以为非瞬时性计算机可读存储介质。
本公开上述实施例增加了新的模块和流程,自动对比、判断、推送、渲染,完成权限控制。
本公开上述实施例引入了权限时间值用于代表权限配置或修改时间,权限时间值变化代表权限数据变化,将原本较大的权限数据量变小,提升前端渲染性能、后端计算的性能。
本公开上述实施例经服务端权限校验模块对比发现权限有变化,则直接返回最新权限数据,无需再次发送请求,让前端专注于渲染。
本公开上述实施例的服务端进行权限对比校验,防止客户端对比会出现的用户在客户端篡改浏览器数据,从而绕考权限限制得问题。
本公开上述实施例大幅度减少了对比权限过程中的系统计算量,并且使实现更新权限所需要的网络请求次数降到最低,提升网络性能。
本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上面所描述的服务端、客户端、信息获取模块、信息缓存模块、界面渲染模块、操作请求发送模块、响应数据接收模块、权限配置请求模块、权限修改请求模块、操作请求接收模块、权限校验模块、权限配置模块和权限生成模块可以实现为用于执行本申请所描述功能的通用处理器、可编程逻辑控制器(PLC)、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意适当组合。
至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种非瞬时性计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

Claims (18)

1.一种权限控制方法,包括:
在用户登录系统的情况下,从服务端获取用户基本信息和权限信息,其中,权限信息包括第一权限时间;
在客户端缓存权限信息;
根据权限信息渲染客户端界面;
向服务端发送操作请求,其中,所示操作请求包括第一权限时间,以便服务端比较第一权限时间和数据库中的第二权限时间;
接收服务端返回的响应数据,其中,所述响应数据包括权限时间字段;
根据所述响应数据对页面进行渲染。
2.根据权利要求1所述的权限控制方法,其中,所述根据所述响应数据对页面进行渲染包括:
在所述权限时间字段为已修改的情况下,清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染,其中,所述响应数据还包括新的权限信息,服务端在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端。
3.根据权利要求1所述的权限控制方法,其中,所述根据所述响应数据对页面进行渲染包括:
在所述权限时间字段为空的情况下,判定权限信息未更新,根据用户请求数据对客户端界面进行渲染,其中,所述响应数据还包括用户请求数据,服务端在第一权限时间和数据库中的第二权限时间相同的情况下,返回响应数据到客户端。
4.根据权利要求1-3中任一项所述的权限控制方法,其中,所述权限信息还包括菜单权限数据和按钮权限数据;
所述根据权限信息渲染客户端界面包括:
将菜单权限数据和按钮权限数据进行数据格式转换,包括:将菜单权限数据转换为动态路由数据;
将动态路由数据和本地默认路由数据合并为总权限路由数据;
循环遍历总权限路由数据,生成菜单栏;
采用原型挂载方式判断按钮权限数据中是否存在按钮所需要的权限,动态渲染权限按钮。
5.根据权利要求1-3中任一项所述的权限控制方法,还包括:
接收用户选择的新增角色的菜单权限和按钮权限;
将用户选择的新增角色的菜单权限和按钮权限发送到服务端,以便服务端进行权限配置,并基于配置时间,生成第二权限时间。
6.根据权利要求1-3中任一项所述的权限控制方法,还包括:
向服务端发送角色权限修改请求,以便服务端进行角色权限修改,并根据修改权限时间更新第二权限时间。
7.一种权限控制方法,包括:
接收客户端发送的操作请求,其中,所示操作请求包括第一权限时间,第一权限时间包括在权限信息中,所述用户基本信息和权限信息为在用户登录系统的情况下从服务端获取、并缓存在客户端的,所述权限信息,用于渲染客户端界面;
比较第一权限时间和数据库中的第二权限时间;
根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据,以便客户端根据所述响应数据对页面进行渲染。
8.根据权利要求7所述的权限控制方法,其中,所述根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据包括:
在第一权限时间和数据库中的第二权限时间不相同的情况下,设置权限时间字段为已修改,对权限信息进行更新,返回响应数据到客户端,其中,所述响应数据包括用户的新权限信息和权限时间字段,以便客户端清空本地缓存的权限信息,采用新的权限信息对客户端界面进行重新渲染。
9.根据权利要求7所述的权限控制方法,其中,所述根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据包括:
在第一权限时间和数据库中的第二权限时间相同的情况下,设置权限时间字段设置为空,返回响应数据到客户端,其中,所述响应数据包括用户请求数据和权限时间字段,以便客户端根据用户请求数据对客户端界面进行渲染。
10.根据权利要求7-9中任一项所述的权限控制方法,其中,所述权限信息还包括菜单权限数据和按钮权限数据。
11.根据权利要求7-9中任一项所述的权限控制方法,还包括:
接收客户端发送的、用户选择的新增角色的菜单权限和按钮权限;
根据用户选择的新增角色的菜单权限和按钮权限,进行权限配置;
基于配置时间,生成第二权限时间,并存储在数据库中。
12.根据权利要求7-9中任一项所述的权限控制方法,还包括:
接收客户端发送的角色权限修改请求;
根据所述角色权限修改请求进行角色权限修改;
根据修改权限时间更新第二权限时间。
13.一种客户端,包括:
信息获取模块,被配置为在用户登录系统的情况下,从服务端获取用户基本信息和权限信息,其中,权限信息包括第一权限时间;
信息缓存模块,被配置为在客户端缓存权限信息;
界面渲染模块,被配置为根据权限信息渲染客户端界面;
操作请求发送模块,被配置为向服务端发送操作请求,其中,所示操作请求包括第一权限时间,以便服务端比较第一权限时间和数据库中的第二权限时间;
响应数据接收模块,被配置为接收服务端返回的响应数据,其中,所述响应数据包括权限时间字段;
其中,界面渲染模块,还被配置为根据所述响应数据对页面进行渲染。
14.一种客户端,包括:
客户端存储器,被配置为存储指令;
客户端处理器,被配置为执行所述指令,使得所述客户端执行实现如权利要求1-6中任一项所述权限控制方法的操作。
15.一种服务端,包括:
操作请求接收模块,被配置为接收客户端发送的操作请求,其中,所示操作请求包括第一权限时间,第一权限时间包括在权限信息中,所述用户基本信息和权限信息为在用户登录系统的情况下从服务端获取、并缓存在客户端的,所述权限信息,用于渲染客户端界面;
权限校验模块,被配置为比较第一权限时间和数据库中的第二权限时间;并根据第一权限时间和第二权限时间是否相同,向客户端返回相应的响应数据,以便客户端根据所述响应数据对页面进行渲染。
16.一种服务端,包括:
服务端存储器,被配置为存储指令;
服务端处理器,被配置为执行所述指令,使得所述服务端执行实现如权利要求7-12中任一项所述权限控制方法的操作。
17.一种权限控制系统,包括如权利要求13或14所述的客户端和如权利要求15或16所述的服务端。
18.一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如权利要求1-12中任一项所述权限控制方法。
CN202311014716.2A 2023-08-11 2023-08-11 权限控制方法和系统、客户端、服务端和存储介质 Pending CN117056952A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311014716.2A CN117056952A (zh) 2023-08-11 2023-08-11 权限控制方法和系统、客户端、服务端和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311014716.2A CN117056952A (zh) 2023-08-11 2023-08-11 权限控制方法和系统、客户端、服务端和存储介质

Publications (1)

Publication Number Publication Date
CN117056952A true CN117056952A (zh) 2023-11-14

Family

ID=88654687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311014716.2A Pending CN117056952A (zh) 2023-08-11 2023-08-11 权限控制方法和系统、客户端、服务端和存储介质

Country Status (1)

Country Link
CN (1) CN117056952A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117272397A (zh) * 2023-11-22 2023-12-22 华信咨询设计研究院有限公司 一种基于文件设计的rbac的角色权限修改方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117272397A (zh) * 2023-11-22 2023-12-22 华信咨询设计研究院有限公司 一种基于文件设计的rbac的角色权限修改方法
CN117272397B (zh) * 2023-11-22 2024-04-16 华信咨询设计研究院有限公司 一种基于文件设计的rbac的角色权限修改方法

Similar Documents

Publication Publication Date Title
US11182503B2 (en) Dynamic content redaction
US10193953B2 (en) Self describing configuration
US10586061B2 (en) Federated search
US10496837B2 (en) Support sharing the same table for protected and non-protected data columns
US10592684B2 (en) Automatic operation detection on protected field
US8365271B2 (en) Controlling access of a client system to access protected remote resources supporting relative URLs
CN103957436B (zh) 一种基于ott业务的视频防盗链方法
US7178163B2 (en) Cross platform network authentication and authorization model
EP3365832B1 (en) Self describing configuration with support for sharing data tables
CN111259545B (zh) 智能驾驶虚拟仿真云平台
US20050198332A1 (en) Controlling access of a client system to an access protected remote resource
JP7165715B2 (ja) 統合検索のためのサポートを伴う保護されたフィールド上の自動動作検出
KR101977624B1 (ko) 웹 페이지 상에 인증 정보를 제공하기 위한 방법 및 장치
CN117056952A (zh) 权限控制方法和系统、客户端、服务端和存储介质
CN111062028B (zh) 权限管理方法及装置、存储介质、电子设备
CN111475803B (zh) 后台权限管理系统及管理方法
CN109040024A (zh) 一种资源访问权限控制方法及系统
CN115237853A (zh) 数据查询的方法、装置、电子设备和存储介质
CN112511316A (zh) 单点登录接入方法、装置、计算机设备及可读存储介质
CN106899563A (zh) 鉴权方法及装置、鉴权码生成方法及装置、鉴权系统
US20100191864A1 (en) Message conversion method and message conversion system
US10506272B1 (en) Parameterizable encoding profiles
CN111988284B (zh) Pdp的配置方法、装置、电子设备和存储介质
CN117407457B (zh) 基于可配置规则的多源数据融合方法、系统及设备
CN117560182A (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