ruoyi-vue中的菜单权限和自定义接口并设置权限验证

学习目标:了解ruoyi中的菜单权限并能自定义接口设置权限验证


目录

1.了解菜单权限

1.1 角色权限

1.2原理解析

后端代码解析:

2.自定义接口并设置权限验证

2.1 扩展测试

2.2自定义权限标识a:b:c可不可以呢

总结:


1.了解菜单权限

进入系统管理、菜单管理里,可以看到有些菜单、目录、按钮是有着权限标识的。

对于前端来说,权限标识是控制当前组件是否给当前用户显示。

对于后端来说,权限标识是控制接口是否给当前用户访问。

1.1 角色权限

在用户管理中 可以看到每个用户有不同的角色,分为admin超级角色和common普通角色

在角色管理中,我们可以为每个角色配置菜单权限

举例:

将普通角色的用户管理菜单权限去除  这样前端菜单应该不会显示用户管理  后端也无法访问用户管理的接口了

我们登录ry这个普通角色账号

左边是修改前,右边是修改后的结果,可以看到 用户管理确实是看不到了

1.2原理解析

接下来我们开始分析

这是admin 超级管理员账号进入页面后执行的代码,可以看到它的permissions是*:*  这代表了所有的权限它都拥有.

而这时common普通用户进入页面后执行的代码, 它的permissions 就是我们之前页面给它勾选的菜单权限,因为我们之前把用户管理的权限去掉了,所以这里面也就没有一个user出现。

不信可以做一个对照组实验。

登录admin账号 对普通角色勾选上用户管理

再次刷新普通用户的页面,可以看到所有的user菜单权限又已经出现了.

页面也已经可见了。

后端代码解析:

sysloginController里 首先获取到当前登录的用户  然后去获取当前用户拥有的菜单权限,最后去比对数据库菜单权限是否一致。

首先判断是否是管理员 如果是则拥有所有权限,如果是其他角色则从数据库中根据角色id获取到对应拥有的菜单权限,最后传给前端。

前端通过调用getrouters获取到当前用户所有的菜单,结合permissions 来进行过滤显示.


2.自定义接口并设置权限验证

对于自定义接口想要对用户进行权限验证,需要使用@PreAuthorize使用自定义权限标识

后端的权限标识应该和前端菜单中的权限字符是一致的。

在前端的学生信息页面中,添加一个按钮,根据是否拥有权限student:interface:test 来决定是否显示。

 按钮的方法

在角色管理中 对普通角色添加学生信息,但是不添加自定义接口.

效果是这样的

将我们自定义的按钮勾选上。

成功显示了按钮.

测试接口,成功返回了我们接口的内容

2.1 扩展测试

取消普通角色的权限

同时删除前端的v-haspermi 校验

这样即使没有菜单按钮权限依旧可以显示按钮

此时我们单击按钮,提示没有权限,证明我们的自定义接口权限是没有问题的。

2.2自定义权限标识a:b:c可不可以呢

将权限字符修改成a:b:c

后端标识符修改

可以看到自定义标识权限是a:b:c,接口权限也是没有问题的。

总结:

只要权限标识在 sys_menu.perms 中存在,并分配给角色,就能用于 @ss.hasPermi('xxx') 校验。

就是说只要在菜单管理添加菜单/按钮/目录的时候设置好权限标识,前后端对应好你设置的权限标识,就可以进行正确的权限校验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值