目录
一、问题引入
ruoyi 系统里面后端这么多接口,不登录能访问吗?登录了就都能访问吗? 自定义的接口,如何能保证其安全性?
接口1
接口2
在若依当中有很多接口访问的前提是登录了若依账号,但是在我们在没有登录若依时,例如接口1我们取验证码的这个过程是在登录之前完成的;而接口2为例功能是需要登录之后才能完成的 。接口2与接口1在注解上多了一个@PreAuthorize("@ss.hasPermi('system:role:list')") ,我们可以试着研究一下这个注解的功能。
二、接口权限后端源码分析
2.1 @ss.hasPermi('system:user:list')
通过注解里的函数@ss.hasPermi('system:user:list') 返回值控制
返回true,表示具有授权[Authorize ],能够继续访问
返回false,表示不具有授权,不能继续访问
2.2 @ss.hasPermi('system:user:list')
判断当前登录用户的权限是否包含'system:user:list'
包含则返回true,否则返回false。
三、菜单权限
3.1菜单权限展示
3.2菜单权限作用
前端:根据是否具有对应权限,控制组件是否给当前用户显示
后端:根据是否具有对应权限,控制接口是否给当前用户访问
用户ry 角色默认为普通角色,在这里我没有给他访问线上商城和Work菜单的权限。
当我们登陆ry这个账号就发现,菜单栏没有这个选项,ry没有权限访问线上商城和Work菜单。
这时我们再给ry添加Word菜单用户信息表查询权限,即具有权限system:user:list,但其他权限都没有system:Myusers:list,但其他权限都没有
用户ry 能够重新看到用户信息表,且能查询到所有用户数据。 但是由于没有增、删、改权限,显然前端一些按钮不显示了。此时后端接口也是没有权限访问
四、自定义接口并设置权限验证
首先打开菜单管理里边的用户信息表里添加一个按钮
4.1后端定义新接口
涉及到权限验证,首先需要一个接口,这里简单定义了一个接口。
4.2 配置菜单权限
点击新建按钮,建立标识权限system:Myusers:debug
4.3编写前端代码
将点击事件补充完整