guard 权限
gitcx
# 设置角色和权限点
你可以在 src/store/modules/user.js 中 getUserInfo 的时候对角色(role)和权限点(permission)进行设置
# 权限使用
一个完整的权限判断对象
/* 旧版本 */
{
"role": ["admin", "editor"],
"ability": ["READ", "WRITE"],
"mode": "oneOf" | "allOf" | "except"
}
/* 2021年9月后新版本 */
{
"role": ["Admin", "Editor"],
"permission ": ["read:system","write:system","delete:system"],
"mode": "oneOf" | "allOf" | "except"
}
allOf: 数组内所有角色都拥有,返回True
oneOf: 数组内拥有任一角色,返回True(等价第1种数据)
except: 不拥有数组内任一角色,返回True(取反)
我们依旧保留了 v-permissions 自定义指令,如果你想简单的使用,直接输入一个字符串数组即可,默认使用 role 角色判断,oneOf 模式
v-permissions="['admin']" // 旧版
<br />
v-permissions="['Admin']" // 2021年9月后新版本
等价于
v-permissions="{ role: ['admin'], mode: 'oneOf'}" // 旧版
<br />
v-permissions="{ role: ['Admin'], mode: 'oneOf'}" // 2021年9月后新版本
如果你想使用更多的功能,比如使用权限点 ability(新版 ability 改名为 permission) 控制,输入完整的对象即可,以下输入皆可行
v-permissions="{ role: ['admin'] }" // 旧版
<br />
v-permissions="{ ability: ['WRITE'] }" // 旧版
<br />
v-permissions="{ role: ['editor'], ability: ['READ'], mode: 'allOf' }" // 旧版
<br />
v-permissions="{ role: ['Admin'] }" // 2021年9月后新版本
<br />
v-permissions="{ permission: ['delete:system'] }" // 2021年9月后新版本
<br />
v-permissions="{ role: ['Admin'], permission: ['delete:system'], mode: 'allOf'}"
// 2021年9月后新版本
<br />
mode 模式不输入默认是 oneOf
# 页面权限
注意事项:Pro 版本的角色权限控制字段为roles,路由会与userInfo接口返回的roles进行匹配和过滤,当路由模式为all模式时,你可以完全后端处理路由以及页面,那么你可以将src/config/settings.js中的rolesControl设置为false
{
"meta": {
"roles": ["admin"], //旧版本
"guard": ["Admin"] //2021年9月后新版本
}
}
也可以更细粒度的设置,根据个人需求设置
{
"meta": {
"roles": { "role": ["editor"], "ability": ["READ"], "mode": "allOf" }, //旧版本
"guard": { "role": ["Admin", "Editor"], "mode": "allOf" } //2021年9月后新版本
}
}