From 4a8b985b99560e7016b512d5f8eaf6b58493dc2d Mon Sep 17 00:00:00 2001
From: iczer <1126263215@qq.com>
Date: Tue, 4 Aug 2020 19:23:16 +0800
Subject: [PATCH] update docs of authority;
---
docs/advance/authority.md | 225 ++++++++++++++++++++++++++++++++++++-
docs/assets/auth.png | Bin 0 -> 41959 bytes
docs/assets/permission.png | Bin 0 -> 20787 bytes
3 files changed, 224 insertions(+), 1 deletion(-)
create mode 100644 docs/assets/auth.png
create mode 100644 docs/assets/permission.png
diff --git a/docs/advance/authority.md b/docs/advance/authority.md
index b20e814..810e2ae 100644
--- a/docs/advance/authority.md
+++ b/docs/advance/authority.md
@@ -3,5 +3,228 @@ title: 权限管理
lang: zn-CN
---
# 权限管理
+权限控制是中后台系统中常见的需求之一,你可以利用 Vue Antd Admin 提供的权限控制脚手架,实现一些基本的权限控制功能。
+## 角色和权限
+通常情况下有两种方式可以控制用户权限,一种是通过用户角色 role 来控制权限,另一种是通过更细致的权限 permission 来控制。
+这两种方式 Vue Antd Admin 都支持。
+我们定义了 role 和 permission 的基本格式,如果你获取的 role 和 permission 数据格式与 Vue Antd Admin 不一致,
+你需要在获取到 role 和 permission 后将其转换为 Vue Antd Admin 的格式。
+### 角色
+Vue Antd Admin 的 `角色/role` 包含 `id` 和 `operation` 两个属性。其中 `id` 为 `角色/role` 的 id,`operation` 为 `角色/role` 具有的操作权限,是一个字符串数组。
+```js
+role = {
+ id: 'admin', //角色ID
+ operation: ['add', 'delete', 'edit', 'close'] //角色的操作权限
+}
+```
+你也可以设置 role 的值为字符串,比如 role = 'admin', 它等同于:
+```js
+role = {
+ id: 'admin'
+}
+```
+### 权限
+Vue Antd Admin 的 `权限/permission` 也包含 `id` 和 `operation` 两个属性。其中 `id` 为 `权限/permission` 的 id,`operation` 为 `权限/permission` 下的操作权限,是一个字符串数组。
+```js
+permission = {
+ id: 'form', //角色ID
+ operation: ['add', 'delete', 'edit', 'close'] //权限下的操作权限
+}
+```
+你也可以设置 role 的值为字符串,比如 permission = 'form', 它等同于:
+```js
+permission = {
+ id: 'form'
+}
+```
+### 设置用户的角色和权限
+你只需为用户配置 roles 和 permissions 两者中的其中一种,即可完成权限管理功能。当然你也可以两者都配置。
+
+获取到用户权限或角色后,将其格式化转为 Vue Antd Admin 可用的格式,然后使用 `store.commit('account/setPermissions', permissions)` 或 `store.commit('account/setRoles', roles)`
+将其存在本地即可。如下:
+```js
+getPermissions().then(res => {
+ const permissions = res.data
+ this.$store.commit('account/setPermissions', permissions)
+})
+getRoles().then(res => {
+ const roles = res.data
+ this.$store.commit('account/setRoles', roles)
+})
+```
+:::tip
+注意,存在本地的 permissions 和 roles 都应该是数组。
+你可以在 /pages/login/Login.vue 查看完整的用户角色和权限设置代码。
+:::
+## 页面权限
+如果你想给一些页面设置准入权限,只需要给该页面对应的路由设置元数据 authority 即可。 authority 的值可以是一个字符串,也可以是对象。
-### 作者还没来得及编辑该页面,如果你感兴趣,可以点击下方链接,帮助作者完善此页
+如下路由配置,则表明 `验权页面` 需要准入权限(permission): `form`
+```js {5}
+const route = {
+ name: '验权页面',
+ path: 'auth/demo',
+ meta: {
+ authority: 'form',
+ },
+ component: () => import('@/pages/demo')
+}
+```
+下面是 authority 的值为对象的写法,这种写法和上面字符串的写法具有相同的效果:
+```js {5-7}
+const route = {
+ name: '验权页面',
+ path: 'auth/demo',
+ meta: {
+ authority: {
+ permission: 'form'
+ }
+ },
+ component: () => import('@/pages/demo')
+}
+```
+有时你可能需要通过用户角色来配置页面权限,我们同样支持,用法和上面类似。
+
+如下配置,表明 `验权页面` 需要准入角色(role) `admin`:
+```js {5-7}
+const route = {
+ name: '验权页面',
+ path: 'auth/demo',
+ meta: {
+ authority: {
+ role: 'admin'
+ }
+ },
+ component: () => import('@/pages/demo')
+}
+```
+:::tip
+当你未设置 authority 或 设置 authority 的值 为 `*` 时,等同于该页面无需权限限制,我们会忽略此页面的权限检查。
+:::
+:::tip
+当 authority 的值为字符串时,会以 [权限/permission](#权限) 验证权限。如果你需要以 [角色/role](#角色) 验证权限,请以对象形式设置 authority 的值。
+:::
+## 操作权限
+在一些复杂的些场景下,权限可能不仅仅是页面层级这么简单。在一些页面你可能需要校验用户是否具有某些操作的权限,比如 增、删、改、查等。
+为此,我们提供了 `权限校验注入` 和 `权限校验指令` 两个实用的功能。
+### 权限校验注入
+通过对Vue组件的实例方法进行 `权限校验注入`,我们可以控制该实例方法的执行权限,从而精准且安全的验证用户操作。
+
+比如,QueryList 页面的 deleteRecord 方法,我们希望具有操作权限 `delete` 的用户才能调用此方法。
+只需为 `deleteRecord` 方法注入权限校验,按如下方式配置 `authorize` 即可:
+```vue {9-11,13}
+
+ ...
+
+
+```
+如果用户没有 `delete` 权限,调用 deleteRecord 方法,会看到如下提示:
+
+![无此权限](../assets/permission.png)
+### 操作权限校验的类型
+`authorize` 会根据当前页面匹配到的权限类型([permission](#权限) / [role](#角色)),来判断是使用 `permission.operation` 还是 `role.operation` 来进行权限校验。
+如果当前页面同时匹配到了 permission 和 role 权限,则默认通过 permission.operation 来进行操作权限校验。
+
+当然你也可以指定操作权限校验的类型,如下设置即可:
+```js {2-5}
+authorize: {
+ deleteRecord: { //需要 注入权限校验 的方法名:deleteRecord
+ check: 'delete', //需要校验的操作权限:check
+ type: 'role' //指定操作权限校验的类型,可选 permission 和 role。这里指定以 role.operation 校验操作权限
+ }
+}
+```
+### 权限校验指令
+有时我们可能希望用户能够更直观的了解自己的操作权限。比如给没有操作权限的控件应用 disable 样式,禁用 click 事件等。
+我们提供了权限校验指令 `v-auth` 来实现这个功能。
+
+比如,我们想为 QueryList 页面的删除控件进行 `delete` 操作权限校验,只需为删除控件设置 v-auth="\`delete\`" 指令即可,如下:
+```vue {6}
+
+ ...
+
+ ...
+
+ ...
+
+
+
+```
+假如用户没有 `delete` 操作权限,则控件会被应用 disable 样式,并禁用 click 点击事件,如下图:
+
+![权限校验指令](../assets/auth.png)
+:::warning 重要!!!
+v-auth 是我们自定义的一个 [Vue指令](https://cn.vuejs.org/v2/guide/custom-directive.html#ad)。因为 `Vue指令` 的值需要是一个 javascript 表达式,因此你不能直接给 v-auth 赋值为字符串,
+需要把 v-auth 的字符串值用 ` `` ` 包裹起来,否则可能会报 undefined 错误。
+:::
+### 权限校验指令的类型
+你同样也可以指定 v-auth 的权限校验类型,可选 [permission](#权限) 和 [role](#角色)。它的校验方式和 [authorize](#权限校验注入) 类似,如未指定则会自动识别。
+`v-auth:role` 表示通过 `role.operation` 进行校验,`v-auth:permission` 表示通过 `permission.operation` 进行校验。
+
+如下,指定通过 `role.operation` 校验删除控件的操作权限:
+```vue {3}
+
+```
+## 异步路由权限
+异步路由同样可以进行权限校验配置,它和正常的路由权限配置基本无异,只是无需把 [authority](#页面权限) 配置在元数据属性 meta 里。
+你可以在路由组件注册时设置 authority,也可以在异步路由配置里设置 authority。
+
+路由组件注册时设置 [authority](#页面权限):
+```js {6}
+// 路由组件注册
+const routerMap = {
+ ...
+ demo: {
+ name: '演示页',
+ authority: 'form',
+ component: () => import('@/pages/demo')
+ }
+ ...
+}
+```
+
+异步路由配置里设置 [authority](#页面权限):
+```js {11-13}
+const routesConfig = [{
+ router: 'root',
+ children: ['demo',
+ {router: 'parent1'...},
+ ...
+ {
+ router: 'demo',
+ icon: 'file-ppt',
+ path: 'auth/demo',
+ name: '验权页面',
+ authority: {
+ permission: 'form',
+ }
+ }
+ ]
+ }]
+```
diff --git a/docs/assets/auth.png b/docs/assets/auth.png
new file mode 100644
index 0000000000000000000000000000000000000000..132dd4123263c6b172e1d50110b30c167a643984
GIT binary patch
literal 41959
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
z
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