1.本发明涉及鉴权技术领域,具体涉及一种前端路由权限设计方法、系统及电子设备。
背景技术:2.针对后台管理系统或者前台网站,在进行用户鉴权时,相关技术中常常采用菜单管理、角色管理和用户管理这三者相互配合的方式,首先把菜单分配到相应的角色,然后再把角色分配给相应的用户,实现用户权限分配。用户在登录之后可以拿到拥有的权限信息,然后根据这些权限来控制菜单或者按钮的显示与否。
3.然而,这种鉴权方式不能阻止用户通过记住浏览器地址url的方式来进入没有权限的页面或者模块,导致鉴权不可靠,不安全。
4.针对相关技术中鉴权不可靠的问题,目前尚未提出有效的解决方案。
技术实现要素:5.本发明的主要目的在于提供一种前端路由权限设计方法及系统,以解决相关技术中鉴权不可靠的问题。
6.为了实现上述目的,本发明的第一方面提供了一种前端路由权限设计方法,包括:
7.获取用户权限标识数组;
8.根据所述用户权限标识数组生成前端路由和菜单树;
9.遍历所述菜单树,生成界面菜单。
10.可选地,在获取用户权限标识数组之前,所述方法还包括:
11.建立权限菜单,其中,所述权限菜单的字段包括菜单名称和权限标识;
12.建立角色,并为所述角色分配权限菜单;
13.建立用户,并为所述用户分配角色,确定所述用户的权限。
14.可选地,所述根据所述用户权限标识数组生成前端路由和菜单树包括:
15.定义路由对象;
16.根据所述用户权限标识数组遍历所述路由对象,生成前端路由和菜单树。
17.进一步地,所述定义路由对象包括:
18.将属性名称设为控制所述路由对象的权限标识,其中,所述属性名称中包含预设符号;
19.将属性值设为vue-router库需要的路由对象。
20.进一步地,如果所述路由对象含有子路由,则采用子路由childroutes进行区分;
21.如果权限菜单与路由层级不通,则采用容器childitems进行区分,以确定权限菜单对应的路由层级,其中,所述路由层级包括路由对象和子路由。
22.可选地,所述根据所述用户权限标识数组遍历所述路由对象,生成前端路由和菜单树,包括:
23.根据所述用户权限标识数组遍历所述路由对象,将属性名称按照属性名称中包含的预设符号所处位置分割为路由权限标识数组;
24.如果所述路由权限标识数组中存在权限标识位于用户权限标识数组中,则将所述路由对象添加至路由中,动态生成前端路由。
25.可选地,所述根据所述用户权限标识数组遍历所述路由对象,生成前端路由和菜单树,包括:
26.根据所述用户权限标识数组遍历所述路由对象,生成菜单树。
27.本发明的第二方面提供了一种前端路由权限设计系统,包括:
28.获取单元,用于获取用户权限标识数组;
29.生成单元,用于根据所述用户权限标识数组生成前端路由和菜单树;
30.遍历单元,用于遍历所述菜单树,生成界面菜单。
31.本发明的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行第一方面任意一项提供的前端路由权限设计方法。
32.本发明的第四方面提供了一种电子设备,所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行第一方面任意一项提供的前端路由权限设计方法。
33.在本发明实施例提供的前端路由权限设计方法中,获取用户权限标识数组;根据所述用户权限标识数组生成前端路由和菜单树;遍历所述菜单树,生成界面菜单。通过用户的用户权限标识数组分别生成前端路由和菜单树,然后再遍历基于用户权限标识数组得到的菜单树生成界面菜单,使得用户在没有权限、用户权限标识数组不含对应权限标识的时候无法通过记住浏览器地址的方式进入,提高了鉴权的可靠性和安全性,解决了相关技术中鉴权不可靠的问题。
附图说明
34.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
35.图1为本发明实施例提供的前端路由权限设计方法流程示意图;
36.图2为本发明实施例提供的前端路由权限设计系统框图;
37.图3为本发明实施例提供的电子设备框图。
具体实施方式
38.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范
围。
39.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
40.在本发明中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本发明及其实施例,并非用于限定所指示的系统、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
41.并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本发明中的具体含义。
42.此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个系统、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
43.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
44.针对后台管理系统或者前台网站,在进行用户鉴权时,相关技术中常常采用菜单管理、角色管理和用户管理这三者相互配合的方式,首先把菜单分配到相应的角色,然后再把角色分配给相应的用户,实现用户权限分配。用户在登录之后可以拿到拥有的权限信息,然后根据这些权限来控制菜单或者按钮的显示与否。然而,这种鉴权方式不能阻止用户通过记住浏览器地址url的方式来进入没有权限的页面或者模块,导致鉴权不可靠,不安全。
45.为了解决上述问题,本发明实施例提供了一种前端路由权限设计方法,如图1所示,该方法包括如下的步骤s101至步骤s103:
46.步骤s101:获取用户权限标识数组;
47.用户拿到拥有的权限信息后,用户权限对应有用户权限标识,用户的所有权限对应的权限标识构成用户权限标识数组,可以根据用户的权限获取用户权限标识数组,用户权限标识数组中包含用户的所有权限标识,这些权限标识指出了用户有权限可以访问的菜单、资源、页面、模块或功能按钮。
48.在本发明一种优选的实施方式中,在步骤s101之前,所述方法还包括:
49.建立权限菜单,其中,所述权限菜单的字段包括菜单名称和权限标识;新增权限菜单时,权限菜单的字段只需要添加菜单名称和权限标识,不需要添加其他字段,权限菜单的字段包括菜单名称和权限标识,所述权限标识对应权限菜单中的权限。
50.本发明实施例在建立权限菜单时不需要添加字段来区分建立的权限是按钮还是菜单,也不需要配置路由的url地址,只需要菜单名称和权限标识即可,不需要添加其他字段,解决了建立权限菜单时因需要添加或配置的信息较多导致的不便捷的问题,简化了存
储权限菜单需要的字段。
51.建立角色,并为所述角色分配权限菜单;新增角色时,可以为角色分配权限菜单,分配权限菜单后,角色下就拥有所分配的权限菜单对应的权限;
52.建立用户,并为所述用户分配角色,确定所述用户的权限。新增用户时,为用户分配角色,分配角色后,用户拥有所分配的角色下的所有权限,可以确定用户的权限,各权限分别对应有权限标识,用户权限对应有用户权限标识,用户的所有权限对应的权限标识构成用户权限标识数组。
53.步骤s102:根据所述用户权限标识数组生成前端路由和菜单树;
54.获取用户权限标识数组后,可以根据用户权限标识数组生成前端路由,还可以根据用户权限标识数组生成菜单树,配置路由文件,以实现鉴权。
55.具体的,所述步骤s102包括:
56.定义路由对象;
57.根据所述用户权限标识数组遍历所述路由对象,生成前端路由和菜单树。
58.其中,所述定义路由对象包括:
59.将属性名称设为控制所述路由对象的权限标识,其中,所述属性名称中包含预设符号;
60.在设置属性名称时,可以设为控制路由对象的权限标识,通过将属性名称设为控制路由对象的权限标识,可以更清晰地显示出该路由对象对应的权限;预设符号可以是#号,属性名称可以包含#号,后续会在动态生成前端路由时使用,以预设符号在属性名称中的位置将属性名称分割为路由权限标识数组。
61.将属性值设为vue-router库需要的路由对象。
62.进一步的,如果所述路由对象含有子路由,则采用子路由childroutes进行区分;通过childroutes可以将路由对象和子路由区分;
63.如果权限菜单与路由层级不通,则采用容器childitems进行区分,以确定权限菜单对应的路由层级,其中,所述路由层级包括路由对象和子路由。通过采用容器childitems可以区分权限菜单中的权限,与路由层级中路由对象或子路由之间的对应关系。
64.其中,所述根据所述用户权限标识数组遍历所述路由对象,生成前端路由和菜单树,包括:
65.根据所述用户权限标识数组遍历所述路由对象,将属性名称按照属性名称中包含的预设符号所处位置分割为路由权限标识数组;
66.属性名称可以包含#号,预设符号以#号为例,在动态生成前端路由时,先按照#号在属性名称中所处的位置将属性名称分割为多个路由权限标识,多个路由权限标识构成路由权限标识数组,路由权限标识数组中包含了控制路由对象的权限标识;
67.如果所述路由权限标识数组中存在权限标识位于用户权限标识数组中,则将所述路由对象添加至路由中,动态生成前端路由。如果所述路由权限标识数组中存在权限标识位于用户权限标识数组中,或者说,如果用户权限标识数组包含路由权限标识数组中的任意一个权限标识,则将路由对象添加至路由中,动态生成前端路由,实现vue项目前端动态路由权限设计。
68.进一步的,所述根据所述用户权限标识数组遍历所述路由对象,生成前端路由和
菜单树,包括:
69.根据所述用户权限标识数组遍历所述路由对象,生成菜单树。在动态生成前端路由的同时,还可以根据用户权限标识数组遍历路由对象,生成菜单树。
70.通过动态生成前端路由和生成菜单树的鉴权方式,可以防止用户通过记住浏览器地址url的方式来进入没有权限的页面或者模块,提高鉴权的可靠性和安全性。
71.步骤s103:遍历所述菜单树,生成界面菜单。通过遍历菜单树,可以生成界面菜单,实现前端路由权限设计和前端鉴权。
72.通过上述步骤s101至步骤s103,本发明可以整体实现前端鉴权,用户在没有权限的时候无法通过记住浏览器地址的方式进入,鉴权方式更加可靠;并且在建立权限菜单时,只需要菜单名称和权限标识,简化了存储权限菜单需要的字段。
73.从以上的描述中,可以看出,本发明实现了如下技术效果:
74.本发明可以整体实现前端鉴权,用户在没有权限的时候无法通过记住浏览器地址的方式进入,鉴权方式更加可靠;
75.并且,在建立权限菜单时,只需要菜单名称和权限标识,简化了存储权限菜单需要的字段。
76.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
77.本发明实施例还提供了一种用于实施上述前端路由权限设计方法的前端路由权限设计系统,如图2所示,该系统包括:
78.获取单元21,用于获取用户权限标识数组;
79.生成单元22,用于根据所述用户权限标识数组生成前端路由和菜单树;
80.遍历单元23,用于遍历所述菜单树,生成界面菜单。
81.本发明实施例还提供了一种电子设备,如图3所示,该电子设备包括一个或多个处理器31以及存储器32,图3中以一个处理器31为例。
82.该控制器还可以包括:输入装置33和输出装置34。
83.处理器31、存储器32、输入装置33和输出装置34可以通过总线或者其他方式连接,图3中以通过总线连接为例。
84.处理器31可以为中央处理器(central processing unit,简称为cpu),处理器31还可以为其他通用处理器、数字信号处理器(digital signal processor,简称为dsp)、专用集成电路(application specific integrated circuit,简称为asic)、现场可编程门阵列(field-programmable gate array,简称为fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合,通用处理器可以是微处理器或者任何常规的处理器。
85.存储器32作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的控制方法对应的程序指令/模块。处理器31通过运行存储在存储器32中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的前端路由权限设计方法。
86.存储器32可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、
至少一个功能所需要的应用程序;存储数据区可存储根据服务器操作的处理装置的使用所创建的数据等。此外,存储器32可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器32可选包括相对于处理器31远程设置的存储器,这些远程存储器可以通过网络连接至网络连接装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
87.输入装置33可接收输入的数字或字符信息,以及产生与服务器的处理装置的用户设置以及功能控制有关的键信号输入。输出装置34可包括显示屏等显示设备。
88.一个或者多个模块存储在存储器32中,当被一个或者多个处理器31执行时,执行如图1所示的方法。
89.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各电机控制方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,简称为rom)、随机存储记忆体(random access memory,简称为ram)、快闪存储器(flash memory,简称为fm)、硬盘(hard disk drive,简称为hdd)或固态硬盘(solid-state drive,简称为ssd)等;存储介质还可以包括上述种类的存储器的组合。
90.虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。