Skip to content

权限

目前前端权限大致实现几种方式

  • 前端角色权限 (xxx 角色可用)
  • 前端路由权限 (权限字符串,或者权限 code 等)
  • 后端返回动态路由表

这里只实现了 权限字符串 来判断权限。如果需要上述的没有的其他两种自行根据业务调整 src/store/permissions buildPermissionRoutes 自行实现 需要过滤菜单的 filter

忽略权限

路由 meta 中 ignoreAuth: true 忽略菜单权限

细粒度权限

函数式

ts
import { usePermissionStore } from '@/store'
const { hasPermission } = usePermissionStore()
hasPermission([])

组件式

ts
import { Authority } from '@/components/authority'
const { hasPermission } = usePermissionStore()

<Authority value="">内容</Authority>
<Authority :value="[]">内容</Authority>

指令

执行虽实现但不推荐使用指令权限。指令权限本质是在 dom 加载完成后 插入移除 dom 元素,这会出现元素 闪现突然消失的情况。对于性能也并不是一个好的选择,指令加载也表示 dom 元素已经加载完了。 推荐组件式 和 函数式 v-if 来处理权限,理由是 v-if 和 组件式 最接近于底层, 并不会做无意义的渲染。

ts
// v-if 底层做到的执行逻辑
是否含有权限 ? h('内容') : null