国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解利用 Vue.js 實現(xiàn)前后端分離的RBAC角色權(quán)限管理

2024-05-06 15:26:39
字體:
供稿:網(wǎng)友

項目背景:物業(yè)管理后臺,不同角色擁有不同權(quán)限

采用技術(shù):Vue.js + Vuex + Element UI

實現(xiàn) RBAC 權(quán)限管理需要后端接口支持,這里僅提供前端解決方案。

因代碼篇幅較大,對代碼進(jìn)行了刪減,文中 “...” 即為省略的一部分代碼。

大致思路:
首先登錄成功后,從后臺拉取用戶當(dāng)前可顯示的菜單和可用權(quán)限列表,分別將其存入 store 的 nav(菜單導(dǎo)航) 和 auth(用戶可用權(quán)限) 中,在用戶切換路由時,判斷是否存在 auth ,如果不存在,則重新獲取,判斷當(dāng)前訪問地址 to.meta.alias 是否在用戶可用權(quán)限列表中,如果不存在,則提示無權(quán)限,否則進(jìn)入路由。

1. 路由與側(cè)邊菜單分離

側(cè)邊菜單相關(guān)代碼 Main.vue

<template><!-- ... -->  <aside :class="collapsed?'menu-collapsed':'menu-expanded'">    <!--導(dǎo)航菜單-->    <el-menu :default-active="$route.path"         class="el-menu-vertical-aliyun"          @open="handleopen"         @close="handleclose"         @select="handleselect"         :collapse="collapsed"         unique-opened router>      <template v-for="(item,index) in nav">        <!-- 二級菜單 -->        <el-submenu :index="index+''"              v-if="item.children && item.children.length > 0">          <!-- 二級菜單頂級 -->          <template slot="title">            <i :class="['icon',item.iconCls]"></i>            <span slot="title">{{item.name}}</span>          </template>          <!-- 二級菜單下級 -->          <el-menu-item-group>            <!--<span slot="title">{{item.name}}</span>-->            <!-- && child.url-->            <template v-for="child in item.children">              <!--無三級菜單-->              <el-menu-item                  :index="child.url"                  :key="child.url"                  v-if="!child.children">                {{child.name}}              </el-menu-item>              <!--有三級菜單-->              <el-submenu                  :index="child.url"                  :key="child.url"                  v-if="child.children">                <span slot="title">{{child.name}}</span>                <el-menu-item v-for="subChild in child.children"                       :index="subChild.url"                       :key="subChild.url">                  {{subChild.name}}                </el-menu-item>              </el-submenu>            </template>          </el-menu-item-group>        </el-submenu>        <!-- 一級菜單 -->        <el-menu-item v-if="!item.children"               :index="item.url">          <i :class="['icon',item.iconCls]"></i>          <span slot="title">{{item.name}}</span>        </el-menu-item>        </template>    </el-menu>  </aside><!-- ... --></template><script>  export default {    // ...    computed: {     // 從 Vuex 中獲取導(dǎo)航菜單     nav() {      return this.$store.state.nav;     }    }    // ...  }</script>            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 无锡市| 阿克陶县| 徐闻县| 金坛市| 博野县| 科尔| 乐业县| 什邡市| 重庆市| 永川市| 三穗县| 高邮市| 珠海市| 邓州市| 保靖县| 全州县| 利津县| 宜兰市| 宜城市| 安岳县| 昭觉县| 隆子县| 西和县| 建宁县| 封丘县| 神农架林区| 黄山市| 旬邑县| 株洲县| 哈巴河县| 鄯善县| 固阳县| 鄂托克前旗| 玉林市| 沙洋县| 温宿县| 迁西县| 衡东县| 锡林郭勒盟| 巴彦淖尔市| 江华|