uniapp功能权限判断$auth.auth $auth.role显示判断生成源码

简介: uniapp功能权限判断$auth.auth $auth.role显示判断生成源码

uniapp中,实现界面元素的条件显示或隐藏,主要依赖于Vue的数据绑定和条件渲染指令。这通常与权限管理不同,因为权限管理更多地关注于应用是否有权访问某些功能或数据,而条件渲染则是基于应用内部的状态或逻辑来决定界面元素的显示状态。


主要就是我们在登录时,要增加用户的权限标识,比如permissions具体到哪个功能按钮权限,roles角色权限。

this.$session.setUser({
 token: '1231231',
 username: '123213',
 permissions:['gongneng1',"gongneng2","gongneng3","gongneng4"],
 roles:['admin']
 })

判断功能权限

功能权限判断核心代码:$auth.auth('某个功能')。

如果你们增加了某个功能权限设置进了我们可以直接在界面显示判断里增加判断增加类似以下代码{{$auth.auth('gongneng1')}}。gongneng1是上面permissions功能标识里其中一个功能。

比如是否具有某个功能权限。

判断角色权限

角色判断核心代码:$auth.role('某个角色')


有些功能可能不需要具体到哪个功能点,只需要判断是否有哪个角色。比如可能有管理员、商家、会员这三种角色,不同角色也是需要显示不同菜单的。我们就可以用$auth.role('admin')。其中里面的admin是roles角色英文标识。

权限判断方法来源

更多$auth相关用法,我们可以打开common/Auth.js里代码实现。然后参照上方的显示判断配置自己的显示功能判断。

代码生成

上方条件设置完成后,我们可以保存源码至本地就可以进行功能权限测试了。

<template>
  <view class="container container23285">
    <view v-if="$auth.role('admin')" class="flex flex-wrap diygw-col-24 flex5-clz">
      <view class="flex diygw-col-12 items-center flex-nowrap flex2-clz">
        <view class="flex flex-wrap diygw-col-0 flex-direction-column justify-center items-center flex7-clz">
          <text class="flex icon2 diygw-col-0 diy-icon-lihe"></text>
        </view>
        <view class="flex flex-wrap diygw-col-0 flex-direction-column flex6-clz">
          <text class="diygw-text-line1 diygw-col-24 text4-clz"> AI编程 </text>
          <text class="diygw-text-line1 diygw-col-24"> 智能编程高效学习 </text>
        </view>
      </view>
      <view class="flex diygw-col-12 items-center flex-nowrap flex-clz">
        <view class="flex flex-wrap diygw-col-0 flex-direction-column justify-center items-center flex1-clz">
          <text class="flex icon7 diygw-col-0 diy-icon-youxi"></text>
        </view>
        <view class="flex flex-wrap diygw-col-0 flex-direction-column flex13-clz">
          <text class="diygw-text-line1 diygw-col-24 text-clz"> AI编程 </text>
          <text class="diygw-text-line1 diygw-col-24"> 智能编程高效学习 </text>
        </view>
      </view>
    </view>
    <view v-if="$auth.auth('gongneng1')" class="flex flex-wrap diygw-col-24 flex11-clz">
      <view class="flex flex-wrap diygw-col-8 flex-direction-column items-center flex12-clz">
        <text class="diygw-text-line1 diygw-col-24 text6-clz diygw-ellipsis"> 订单管理 </text>
        <text class="diygw-text-line1 diygw-col-24 diygw-ellipsis"> 10条 </text>
        <text class="flex icon diygw-col-0 icon-clz diy-icon-goodsnewfill"></text>
      </view>
      <view class="flex flex-wrap diygw-col-8 flex-direction-column items-center flex14-clz">
        <text class="diygw-text-line1 diygw-col-24 text9-clz diygw-ellipsis"> 售后管理 </text>
        <text class="diygw-text-line1 diygw-col-24 diygw-ellipsis"> 10条 </text>
        <text class="flex icon4 diygw-col-0 icon4-clz diy-icon-servicefill"></text>
      </view>
      <view class="flex flex-wrap diygw-col-8 flex-direction-column items-center flex17-clz">
        <text class="diygw-text-line1 diygw-col-24 text7-clz diygw-ellipsis"> 消息管理 </text>
        <text class="diygw-text-line1 diygw-col-24 diygw-ellipsis"> 10条 </text>
        <text class="flex icon5 diygw-col-0 icon5-clz diy-icon-commentfill"></text>
      </view>
    </view>
    <view class="clearfix"></view>
  </view>
</template>
 
<script>
  export default {
    data() {
      return {
        //用户全局信息
        userInfo: {},
        //页面传参
        globalOption: {},
        //自定义全局变量
        globalData: { isshow: false }
      };
    },
    onShow() {
      this.setCurrentPage(this);
    },
    onLoad(option) {
      this.setCurrentPage(this);
      if (option) {
        this.setData({
          globalOption: this.getOption(option)
        });
      }
 
      this.init();
    },
    methods: {
      async init() {}
    }
  };
</script>
 
<style lang="scss" scoped>
  .flex5-clz {
    padding-top: 10rpx;
    padding-left: 10rpx;
    padding-bottom: 10rpx;
    padding-right: 10rpx;
  }
  .flex2-clz {
    padding-top: 16rpx;
    border-bottom-left-radius: 12rpx;
    padding-left: 16rpx;
    padding-bottom: 16rpx;
    border-top-right-radius: 12rpx;
    margin-right: 10rpx;
    background-color: #f7faff;
    margin-left: 10rpx;
    overflow: hidden;
    width: calc(50% - 10rpx - 10rpx) !important;
    border-top-left-radius: 12rpx;
    margin-top: 10rpx;
    border-bottom-right-radius: 12rpx;
    margin-bottom: 10rpx;
    padding-right: 16rpx;
  }
  .flex7-clz {
    padding-top: 20rpx;
    border-bottom-left-radius: 120rpx;
    color: #3d65ff;
    padding-left: 20rpx;
    padding-bottom: 20rpx;
    border-top-right-radius: 120rpx;
    background-color: #e2efff;
    flex-shrink: 0;
    overflow: hidden;
    width: 96rpx !important;
    border-top-left-radius: 120rpx;
    border-bottom-right-radius: 120rpx;
    height: 96rpx !important;
    padding-right: 20rpx;
  }
  .icon2 {
    font-size: 52rpx;
  }
  .flex6-clz {
    padding-top: 10rpx;
    flex: 1;
    padding-left: 10rpx;
    padding-bottom: 10rpx;
    padding-right: 10rpx;
  }
  .text4-clz {
    font-weight: bold;
    font-size: 28rpx !important;
  }
  .flex-clz {
    padding-top: 16rpx;
    border-bottom-left-radius: 12rpx;
    padding-left: 16rpx;
    padding-bottom: 16rpx;
    border-top-right-radius: 12rpx;
    margin-right: 10rpx;
    background-color: #f7faff;
    margin-left: 10rpx;
    overflow: hidden;
    width: calc(50% - 10rpx - 10rpx) !important;
    border-top-left-radius: 12rpx;
    margin-top: 10rpx;
    border-bottom-right-radius: 12rpx;
    margin-bottom: 10rpx;
    padding-right: 16rpx;
  }
  .flex1-clz {
    padding-top: 20rpx;
    border-bottom-left-radius: 120rpx;
    color: #9156fd;
    padding-left: 20rpx;
    padding-bottom: 20rpx;
    border-top-right-radius: 120rpx;
    background-color: #f1effd;
    flex-shrink: 0;
    overflow: hidden;
    width: 96rpx !important;
    border-top-left-radius: 120rpx;
    border-bottom-right-radius: 120rpx;
    height: 96rpx !important;
    padding-right: 20rpx;
  }
  .icon7 {
    font-size: 52rpx;
  }
  .flex13-clz {
    padding-top: 10rpx;
    flex: 1;
    padding-left: 10rpx;
    padding-bottom: 10rpx;
    padding-right: 10rpx;
  }
  .text-clz {
    font-weight: bold;
    font-size: 28rpx !important;
  }
  .flex11-clz {
    padding-top: 10rpx;
    padding-left: 10rpx;
    padding-bottom: 10rpx;
    padding-right: 10rpx;
  }
  .flex12-clz {
    padding-top: 20rpx;
    border-bottom-left-radius: 12rpx;
    color: #ff5c47;
    padding-left: 20rpx;
    padding-bottom: 40rpx;
    border-top-right-radius: 12rpx;
    margin-right: 10rpx;
    background-color: #ffecee;
    margin-left: 10rpx;
    flex-shrink: 0;
    overflow: hidden;
    width: calc(33.3333333333% - 10rpx - 10rpx) !important;
    border-top-left-radius: 12rpx;
    margin-top: 10rpx;
    border-bottom-right-radius: 12rpx;
    margin-bottom: 10rpx;
    padding-right: 20rpx;
  }
  .text6-clz {
    font-weight: bold;
    font-size: 28rpx !important;
  }
  .icon-clz {
    bottom: 0rpx;
    position: absolute;
    right: 0rpx;
  }
  .icon {
    font-size: 64rpx;
  }
  .flex14-clz {
    padding-top: 20rpx;
    border-bottom-left-radius: 12rpx;
    color: #03afe7;
    padding-left: 20rpx;
    padding-bottom: 40rpx;
    border-top-right-radius: 12rpx;
    margin-right: 10rpx;
    background-color: #dff6fe;
    margin-left: 10rpx;
    flex-shrink: 0;
    overflow: hidden;
    width: calc(33.3333333333% - 10rpx - 10rpx) !important;
    border-top-left-radius: 12rpx;
    margin-top: 10rpx;
    border-bottom-right-radius: 12rpx;
    margin-bottom: 10rpx;
    padding-right: 20rpx;
  }
  .text9-clz {
    font-weight: bold;
    font-size: 28rpx !important;
  }
  .icon4-clz {
    bottom: 0rpx;
    position: absolute;
    right: 0rpx;
  }
  .icon4 {
    font-size: 64rpx;
  }
  .flex17-clz {
    padding-top: 20rpx;
    border-bottom-left-radius: 12rpx;
    color: #8669ff;
    padding-left: 20rpx;
    padding-bottom: 40rpx;
    border-top-right-radius: 12rpx;
    margin-right: 10rpx;
    background-color: #f4edfd;
    margin-left: 10rpx;
    flex-shrink: 0;
    overflow: hidden;
    width: calc(33.3333333333% - 10rpx - 10rpx) !important;
    border-top-left-radius: 12rpx;
    margin-top: 10rpx;
    border-bottom-right-radius: 12rpx;
    margin-bottom: 10rpx;
    padding-right: 20rpx;
  }
  .text7-clz {
    font-weight: bold;
    font-size: 28rpx !important;
  }
  .icon5-clz {
    bottom: 0rpx;
    position: absolute;
    right: 0rpx;
  }
  .icon5 {
    font-size: 64rpx;
  }
  .container23285 {
  }
</style>
目录
相关文章
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
663 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
8月前
|
存储 前端开发 数据可视化
ThinkPHP在线客服系统源码_可视化开源在线网页客服聊天系统源码uniapp
本文详解在线客服系统源码构建,涵盖系统架构、技术选型、代码实现与功能特性,为开发者和企业提供参考。
|
8月前
|
测试技术 开发工具 git
基于WebSocket即时通讯im源码| uniapp即时通讯源码| 私有化部署SDK视频安装教程
本项目是基于 ThinkPHP7 和 Swoole 构建的即时通讯 IM 源码,打造了一个简洁美观、移动优先的渐进式 Web 应用。支持从源码构建,并提供详细的安装、配置与使用说明。仓库地址:im.jstxym.top。
|
10月前
|
供应链 JavaScript BI
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
这是一款专为小微企业打造的 SaaS ERP 管理系统,基于 SpringBoot+Vue+ElementUI+UniAPP 技术栈开发,帮助企业轻松上云。系统覆盖进销存、采购、销售、生产、财务、品质、OA 办公及 CRM 等核心功能,业务流程清晰且操作简便。支持二次开发与商用,提供自定义界面、审批流配置及灵活报表设计,助力企业高效管理与数字化转型。
802 2
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
|
机器学习/深度学习 算法 搜索推荐
UniApp+ThinkPHP6助阵陪玩系统/ 订单智能匹配引擎的技术方案/源码/二开
本文探讨基于UniApp和ThinkPHP6的陪玩系统技术方案,聚焦订单智能匹配引擎的核心逻辑与应用前景。UniApp实现多端适配,降低开发成本;ThinkPHP6提供高效后端支持,确保系统稳定。匹配引擎通过用户画像、陪玩师能力评估及实时算法,精准对接供需。市场分析显示陪玩服务需求持续增长,但面临信任、竞争与政策挑战。未来可通过AI、VR等技术升级,拓展生态合作与全球化布局,助力陪玩服务成为游戏产业重要板块。
401 2
|
PHP
全新uniapp小说漫画APP小说源码/会员阅读/月票功能
价值980的uniapp小说漫画APP小说源码/会员阅读/月票功能
699 20
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
664 0
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
372 0
在线课堂+工具组件小程序uniapp移动端源码
|
移动开发 小程序 数据可视化
DIY可视化导出源码整合uniapp环境搭建+调试+运行发布
DIY可视化导出源码整合uniapp环境搭建+调试+运行发布
735 0

热门文章

最新文章