1.首先在 我的测试-子菜单 的view视图中添加了一个按钮
<el-button
type="primary"
icon="el-icon-plus"
size="mini">按钮1</el-button>
由于没有加v-hasPermi,因此,角色admin、角色common、角色testman都可以看到按钮1。
此时,我想给按钮1设置权限,让角色admin、角色common能看到该按钮,而角色testman看不到该按钮,需要使用v-hasPermi
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
v-has-permi="['mytest:chi:b1']">按钮1</el-button>
里面的参数值可以随便写,但是若依框架规定了必须是['xxx:xxx:xxx']的形式,
此时,角色admin可以看到该按钮(因为admin绕过了ruoyi的权限管理模块),
但是角色common和角色testman都看不到该按钮,这是由于只有携带了['mytest:chi:b1']标识的角色才能看到按钮1
可是['mytest:chi:b1']是我随便写的,ruoyi系统数据库中没有存入这个标识符,自然除了admin外的所有角色都没有携带该标识符,
因此,需要在将该标识符存入ruoyi数据库中,具体操作如下:
首先进入admin的菜单管理界面,在子菜单处新增一个按钮菜单,名称随便起,后面能找到就行,权限标识符必须对应mytest:chi:b1。
确定后,界面多出一个
通俗的来讲,就是我定义了一个随便起个名,他的标识符为mytest:chi:b1,同时数据库sys_menu中也多出了我刚才添加的内容,
此时就可以在admin的角色管理界面给不用角色分配权限了,
例如,我想让角色common看到按钮1,就把它勾上。想让角色testman看不到按钮1,就把它取消勾选。
反转:上面的操作反过来也行,即先在菜单管理界面增加子菜单的随便起个名,并随便写上一个标识符a。最后使用的时候,就给按钮1加上这个标识符a,即可在角色管理界面,通过勾与不勾选,来控制该角色对按钮1的权限有无了。
(感觉就像是按钮1通过标识符a和随便起个名进行了绑定一样,用户没有随便起个名的权限,就看不到按钮1)
注:
ruoyi在用户登录后,通过getinfo方法,获得用户所拥有的所有权限标识符(就是xxx:xxx:xxx),然后存在一个permissons参数中,每次用户进入一个新的vue组件,都会遍历这个permissons参数,然后与vue组件中所有有v-hasPermi选项的元素进行对应,如果能对应上,就显示这个元素,否则,就不显示这个元素。