UNPKG

vue-authorized

Version:
133 lines (98 loc) 2.64 kB
<p align="center"> <p align="center">用于Vue3, 基于 ABAC 权限验证</p> <p align="center"> <img src="https://img.shields.io/github/package-json/v/xjh22222228/vue-authorized" /> <img src="https://img.shields.io/static/v1.svg?label=&message=Vue3&style=flat-square&color=3fb984" /> <img src="https://img.shields.io/github/license/xjh22222228/vue-authorized" /> </p> </p> ## 安装 ```bash npm i vue-authorized -S # or yarn add vue-authorized ``` ## 使用 一个典型的例子: `authority` 参数接收 `string`/`Array`/`number`/`boolean` , 如果是数组则有任意一个匹配则验证通过 ```vue <template> <Authorized authority="user:add" > <div>有权限则显示</div> </Authorized> </template> <script lang="ts"> import { defineComponent } from 'vue' import Authorized from 'vue-authorized' export default defineComponent({ components: { Authorized }, setup() { // 通常情况从API取得权限集 fetch('/permissions').then(res => { // ['user:add', 'user:del', ...] const permissions = res.json() // 设置权限, 接收一个数组 Authorized.setPermissions(permissions) }) } }) </script> ``` 通过 API `Authorized.checked` 验证权限 ```vue <template> <div v-if="hasPerm">有权限则显示</div> </template> <script lang="ts"> import { defineComponent } from 'vue' import Authorized from 'vue-authorized' export default defineComponent({ components: { Authorized }, setup() { // 接收第二个参数 target,默认为true, 权限通过则返回 target // Authorized.checked('user:add', 'hello') // => 'hello' const hasPerm = Authorized.checked('user:add') return { hasPerm, } } }) </script> ``` 接收插槽 `no-match` 没有权限的情况下显示内容: ```vue <template> <Authorized authority="user:add" > <div>有权限则显示</div> <template v-slot:no-match> 无权限 </template> </Authorized> </template> ``` 无权限传入 `null` 或 空数组 ```vue <script lang="ts"> import Authorized from 'vue-authorized' Authorized.setPermissions(null) // or Authorized.setPermissions([]) ``` ## 属性 | 参数 | 描述 |类型 | 默认值 |是否必填 | | ------------- |------------------- |-------------- |------ |------ | | authority | 校验是否有权限 | `string`/`boolean`/`number`/`unknow[]` | - | 否 | ## 事件 | 参数 | 描述 | | ------------- |------------------- | | no-match | 权限校验不通过触发 | ## LICENSE [MIT](./LICENSE)