新增:权限认证文档新增[如何把权限精确搭到按钮级]示例说明

This commit is contained in:
shengzhang
2021-02-28 02:05:48 +08:00
parent 7268279736
commit 4965149c23
4 changed files with 22 additions and 74 deletions

View File

@@ -112,4 +112,24 @@ StpUtil.checkRoleOr("user:update", "user:delete");
### 拦截全局异常
有同学要问,鉴权失败,抛出异常,然后呢?要把异常显示给用户看吗?**当然不可以!** <br>
你可以创建一个全局异常拦截器,统一返回给前端的格式,参考:[码云GlobalException.java](https://gitee.com/sz6/sa-token/blob/master/sa-token-demo-springboot/src/main/java/com/pj/test/GlobalException.java)
你可以创建一个全局异常拦截器,统一返回给前端的格式,参考:[码云GlobalException.java](https://gitee.com/sz6/sa-token/blob/master/sa-token-demo-springboot/src/main/java/com/pj/test/GlobalException.java)
### 如何把权限精确搭到按钮级?
权限精确到按钮级的意思就是指:**权限范围可以控制到页面上的每一个按钮是否显示**
思路:如此精确的范围控制只依赖后端已经难以完成,此时需要前端进行一定的逻辑判断
1. 在登录时,把当前账号拥有的所有权限码一次性返回给前端
2. 前端将权限码集合保存在`localStorage`或其它全局状态管理对象中
3. 在需要权限控制的按钮上使用js进行逻辑判断例如在`vue`框架中我们可以使用如下写法:
``` js
<button v-if="arr.indexOf('user:delete') > -1">删除按钮</button>
```
其中:`arr`是当前用户拥有的权限码数组,`user:delete`是显示按钮需要拥有的权限码,`删除按钮`是用户拥有权限码才可以看到的内容
注意:以上写法只为提供一个参考示例,不同框架有不同写法,开发者可根据项目技术栈灵活封装进行调用
### 前端有了鉴权后端还需要鉴权吗?
**需要!前端的鉴权只是一个辅助功能,对于专业人员这些限制都是可以轻松绕过的,为保证服务器安全,无论前端是否进行了权限校验,后端接口都需要对会话请求再次进行权限校验!**