Skip to content

权限控制篇

若依Web框架中,权限控制是通过自定义指令实现的,然而小程序端并不支持自定义指令,因此,我们需要另辟蹊径。

使用方式

我们实现了使用起来和自定义指令差不多的权限控制功能的Vite插件,使用方式如下:

javascript
<view z-perms="['aa:bb:cc']">Hello World</view>
<view z-roles="['aa:bb:cc']">Hello World</view>
<view z-roles="['aa:bb:cc']" z-perms="['aa:bb:cc']" v-if="abc()">Hello World</view>

其中,z-permsz-roles 分别表示需要的权限和角色,通过vitePluginUniappPerms插件的转换,上述代码会被转换为:

javascript
<view v-if="$zx.isHasPermission(['aa:bb:cc'])">Hello World</view>
<view v-if="$zx.isHasRoles(['aa:bb:cc'])">Hello World</view>
<view v-if="($zx.isHasPermission(['aa:bb:cc'])) && ($zx.isHasRoles(['aa:bb:cc'])) && (abc())">Hello World</view>

$zx.isHasPermission()$zx.isHasRoles() 是项目中自定义的全局函数,用来判断当前用户是否拥有指定权限或角色。

页面权限控制

此功能待实现。

为什么不直接使用v-if

权限控制与v-if混肴在一起,会导致代码可读性差,不易维护,因此,我们选择使用指令的方式来实现权限控制(你就说这么写City不City吧)。

对此插件感兴趣?

您在项目中的以下目录可以找到源码:

  • /vite/plugins/vite-plugin-uniapp-perms

Released under the MIT License.