国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue + Element UI 前端篇(十三):頁面權(quán)限控制

這篇具有很好參考價值的文章主要介紹了Vue + Element UI 前端篇(十三):頁面權(quán)限控制。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Vue + Element UI 實現(xiàn)權(quán)限管理系統(tǒng) 前端篇(十三):頁面權(quán)限控制?

權(quán)限控制方案

既然是后臺權(quán)限管理系統(tǒng),當(dāng)然少不了權(quán)限控制啦,至于權(quán)限控制,前端方面當(dāng)然就是對頁面資源的訪問和操作控制啦。

前端資源權(quán)限主要又分為兩個部分,即導(dǎo)航菜單的查看權(quán)限和頁面增刪改操作按鈕的操作權(quán)限。

我們的設(shè)計把頁面導(dǎo)航菜單和頁面操作按鈕統(tǒng)一存儲在菜單數(shù)據(jù)庫表中,菜單表中包含以下權(quán)限關(guān)注點。

菜單類型

菜單類型代碼頁面資源的類型。類型包括,0:目錄? ?1:菜單? ?2:按鈕'。

權(quán)限標(biāo)識

權(quán)限標(biāo)識即是代表此頁面資源,用來進行權(quán)限控制的唯一標(biāo)識,主要是進行增刪改查的權(quán)限控制。

權(quán)限標(biāo)識包括,sys:user:add:新增 sys:user:edit:編輯 sys:user:delete:刪除?sys:user:view:查看。

注:目前查看都可以通過菜單可見性進行控制,所以查看權(quán)限標(biāo)識目前沒有用上,如果需要顯示無權(quán)限頁面可以使用。

菜單表結(jié)構(gòu)

具體的菜單表結(jié)構(gòu)如下。

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

-- ------------------------------------------------
--  菜單
-- ------------------------------------------------
--  Table structure for `sys_menu`
-- ------------------------------------------------
CREATE TABLE `sys_menu` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '編號',
  `name` varchar(50) COMMENT '菜單名稱',
  `parent_id` bigint COMMENT '父菜單ID,一級菜單為0',
  `url` varchar(200) COMMENT '菜單URL',
  `perms` varchar(500) COMMENT '授權(quán)(多個用逗號分隔,如:sys:user:add,sys:user:edit)',
  `type` int COMMENT '類型   0:目錄   1:菜單   2:按鈕',
  `icon` varchar(50) COMMENT '菜單圖標(biāo)',
  `order_num` int COMMENT '排序',
  `create_by` varchar(50) COMMENT '創(chuàng)建人',
  `create_time` datetime COMMENT '創(chuàng)建時間',
  `last_update_by` varchar(50) COMMENT '更新人',
  `last_update_time` datetime COMMENT '更新時間',
  `del_flag` tinyint DEFAULT 0 COMMENT '是否刪除  -1:已刪除  0:正常',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='菜單管理';

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

導(dǎo)航菜單實現(xiàn)思路

1.用戶登錄系統(tǒng)

用戶登錄系統(tǒng)之后,跳轉(zhuǎn)到首頁。

2.根據(jù)用戶加載導(dǎo)航菜單

在路由導(dǎo)航守衛(wèi)路由時加載用戶導(dǎo)航菜單并存儲到store。

加載過程如下,返回結(jié)果排除按鈕類型。

user -> user_role -> role -> role_menu -> menu。

3.導(dǎo)航欄讀取菜單樹

導(dǎo)航欄到sotre讀取導(dǎo)航樹并進行展示。?

頁面按鈕實現(xiàn)思路

1.用戶登錄系統(tǒng)

用戶登錄系統(tǒng)之后,跳轉(zhuǎn)到首頁。

2.根據(jù)用戶加載權(quán)限標(biāo)識集合

在路由導(dǎo)航守衛(wèi)路由時加載用戶權(quán)限標(biāo)識集合。

加載過程如下,返回結(jié)果是用戶權(quán)限標(biāo)識的集合。

user -> user_role -> role -> role_menu -> menu。

3.頁面按鈕控制

頁面操作按鈕提供權(quán)限標(biāo)識,查詢是否在用戶權(quán)限標(biāo)識集合中。

在:有權(quán)限,可見或可用,不在:無權(quán)限,不可見或禁用。

目前本系統(tǒng)采用的是狀態(tài)禁用。

權(quán)限控制實現(xiàn)

導(dǎo)航菜單權(quán)限

加載導(dǎo)航菜單

如下圖所示,在導(dǎo)航守衛(wèi)路由時加載導(dǎo)航菜單并保存狀態(tài)。

router/index.js

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

頁面組件引用

導(dǎo)航欄頁面從共享狀態(tài)中讀取導(dǎo)航菜單樹并展示。

views/NavBar/NavBar.vue

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

views/NavBar/NavBar.vue

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

頁面按鈕權(quán)限

添加權(quán)限獲取接口

http/modules/user.js

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

// 查找用戶的菜單權(quán)限標(biāo)識集合
export const findPermissions = (params) => {
    return axios({
        url: '/user/findPermissions',
        method: 'get',
        params
    })
}

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

添加權(quán)限獲取接口

store/modules/user.js

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

export default {
    state: {
        perms: [],  // 用戶權(quán)限標(biāo)識集合
    },
    getters: {
   
    },
    mutations: {
        setPerms(state, perms){  // 用戶權(quán)限標(biāo)識集合
            state.perms = perms;
        }
    },
    actions: {
    }
}

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

加載權(quán)限標(biāo)識

如下圖所示,在導(dǎo)航守衛(wèi)路由時加載權(quán)限標(biāo)識并保存狀態(tài)。

router/index.js

權(quán)限按鈕判斷

封裝了權(quán)限操作按鈕組件,在組件中根據(jù)外部傳入的權(quán)限標(biāo)識進行權(quán)限判斷。

views/Core/KtButton.vue

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

<template>
  <el-button :size="size" :type="type" 
    :loading="loading" :disabled="!hasPerms(perms)" @click="handleClick">
    {{label}}
  </el-button>
</template>

<script>
import { hasPermission } from '@/permission/index.js'
export default {
  name: 'KtButton',
  props: {
    label: {  // 按鈕顯示文本
      type: String,
      default: 'Button'
    },
    size: {  // 按鈕尺寸
      type: String,
      default: 'mini'
    },
    type: {  // 按鈕類型
      type: String,
      default: null
    },
    loading: {  // 按鈕加載標(biāo)識
      type: Boolean,
      default: false
    },
    disabled: {  // 按鈕是否禁用
      type: Boolean,
      default: false
    },
    perms: {  // 按鈕權(quán)限標(biāo)識,外部使用者傳入
      type: String,
      default: null
    }
  },
  data() {
    return {
    }
  },
  methods: {
    handleClick: function () {
      // 按鈕操作處理函數(shù)
      this.$emit('click', {})
    }, 
    hasPerms: function (perms) {
      // 根據(jù)權(quán)限標(biāo)識和外部指示狀態(tài)進行權(quán)限判斷
      return hasPermission(perms) & !this.disabled
    }
  },
  mounted() {
  }
}
</script>

<style scoped>

</style>

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

權(quán)限判斷邏輯

src/permission/index.js

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

import store from '@/store'
/**
 * 判斷用戶是否擁有操作權(quán)限
 * 根據(jù)傳入的權(quán)限標(biāo)識,查看是否存在用戶權(quán)限標(biāo)識集合
 * @param perms
 */
export function hasPermission (perms) {
    let hasPermission = false
    let permissions = store.state.user.perms
    for(let i=0, len=permissions.length; i<len; i++) {
        if(permissions[i] === perms) {
            hasPermission = true;
            break
        }
    }
    return hasPermission
}

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

權(quán)限按鈕引用

views/Sys/User.vue

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

測試效果

1.可用狀態(tài),操作按鈕可用。

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

2.修改頁面的權(quán)限標(biāo)識,導(dǎo)致認(rèn)證失敗。

如下圖所示,修改新增和刪除按鈕的權(quán)限標(biāo)識(加個2),導(dǎo)致權(quán)限認(rèn)證失敗。

3.無權(quán)限,操作按鈕禁用。

新增和刪除按鈕因為修改了權(quán)限標(biāo)識,匹配失敗,變成了禁用狀態(tài)。

vue + element ui 實現(xiàn)權(quán)限管理系統(tǒng),vue

源碼下載

后端:kitty: 基于Spring Boot、Spring Cloud、Vue.js 、Element UI實現(xiàn),采用前后端分離架構(gòu)的權(quán)限管理系統(tǒng),JAVA快速開發(fā)平臺。文章來源地址http://www.zghlxwxcb.cn/news/detail-823453.html

到了這里,關(guān)于Vue + Element UI 前端篇(十三):頁面權(quán)限控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 78.(前端)分配權(quán)限頁面顯示——樹形結(jié)構(gòu)使用(Element-ui的Tree樹形控件)

    78.(前端)分配權(quán)限頁面顯示——樹形結(jié)構(gòu)使用(Element-ui的Tree樹形控件)

    在前端的操作中,應(yīng)該增加修改、刪除、分配權(quán)限的操作 這次主要是實現(xiàn)分配權(quán)限的顯示?。。。。。?更換icon圖標(biāo),并設(shè)計大小 綁定函數(shù),點擊彈出提示框(DIalog對話框) 在對話框內(nèi),應(yīng)該顯示一個樹形結(jié)構(gòu)提供選擇(Tree樹形控件) 初始化樹形結(jié)構(gòu),并填充數(shù)據(jù)

    2024年02月05日
    瀏覽(87)
  • 基于vue-cli創(chuàng)建后臺管理系統(tǒng)前端頁面——element-ui,axios,跨域配置,布局初步,導(dǎo)航欄

    基于vue-cli創(chuàng)建后臺管理系統(tǒng)前端頁面——element-ui,axios,跨域配置,布局初步,導(dǎo)航欄

    1.vue-cli創(chuàng)建前端工程,安裝element-ui,axios和配置; 2.前端跨域的配置,請求添加Jwt的設(shè)置; 3.進行初始化布局,引入新增頁面的方式; 4.home頁面導(dǎo)航欄的設(shè)置,一級目錄,二級目錄; 安裝成功 布局初步 1.vue-cli創(chuàng)建前端工程,安裝element-ui,axios和配置; 2.前端跨域的配置,請

    2024年02月09日
    瀏覽(34)
  • Vue+Element UI 權(quán)限管理(角色 )

    Vue+Element UI 權(quán)限管理(角色 )

    用戶前臺登錄后,后臺返回一個token,將該token存儲到store中,并設(shè)置到header中,每次發(fā)起請求時都會攜帶該token,用于后臺進行權(quán)限校驗 在store 的user.js中定義了該方法 此時登錄成功后,后臺將返回一個token 在請求攔截器中將token添加到請求頭上,在響應(yīng)攔截器中設(shè)置未登錄狀

    2024年02月12日
    瀏覽(14)
  • ?Vue + Element UI前端篇(二):Vue + Element 案例 ?

    ?Vue + Element UI前端篇(二):Vue + Element 案例 ?

    打開 Visual Studio Code,F(xiàn)ile -- add Folder to Workspace,導(dǎo)入我們的項目。 安裝依賴 Element 是國內(nèi)餓了么公司提供的一套開源前端框架,簡潔優(yōu)雅,提供了 vue、react、angular 等多個版本,我們這里使用 vue 版本來搭建我們的界面。 訪問:http://element-cn.eleme.io/#/zh-CN/component/installation?,官

    2024年02月09日
    瀏覽(25)
  • 【Vue2+Element ui通用后臺】菜單權(quán)限

    對于菜單權(quán)限我們需要解決以下問題: 1、不同的賬號登錄,有不同的菜單 2、通過輸入url地址來顯示頁面,所以應(yīng)該根據(jù)權(quán)限動態(tài)注冊路由 3、對于菜單數(shù)據(jù),在不同頁面之間的數(shù)據(jù)通信 現(xiàn)在項目中的菜單,我們是在 CommenAside 中寫死的,現(xiàn)在我們需要根據(jù)登錄后返回的權(quán)限

    2024年02月07日
    瀏覽(20)
  • vue-element-adminn實現(xiàn)權(quán)限管理(后端只控制權(quán)限r(nóng)oles)

    vue-element-adminn實現(xiàn)權(quán)限管理(后端只控制權(quán)限r(nóng)oles)

    用戶應(yīng)該分為三類: ? 1、普通用戶(user):只允許登錄前臺小程序端并進行基本的操作、不能進行后臺管理系統(tǒng)的任何操作。 ? 2、店鋪管理員(admin):允許管理店鋪的欄目CRUD操作、商品CRUD操作、評論的查看與刪除、查看店鋪的銷售情況等。 ? 3、超級管理員(super):允許進行

    2024年01月18日
    瀏覽(20)
  • Element UI +Vue頁面生成二維碼的方法

    //在終端輸入npm命令,安裝二維碼插件 全部代碼 名稱 類型 默認(rèn)值 說明 errorCorrectionLevel String M 錯誤處理級別??蛇x值:low, medium, quartile, high or L, M, Q, H maskPattern Number 可選值:0, 1, 2, 3, 4, 5, 6, 7 margin Number 4 scale Number 4 width Number color.dark String #000000ff color.light String #ffffffff logoS

    2024年03月15日
    瀏覽(25)
  • Vue + Element UI 前端篇(七):功能組件封裝

    Vue + Element UI 前端篇(七):功能組件封裝

    為了避免組件代碼的臃腫,這里對主要的功能部件進行封裝,保證代碼的模塊化和簡潔度。 組件結(jié)構(gòu) 組件封裝重構(gòu)后,試圖組件結(jié)構(gòu)如下圖所示 代碼一覽 Home組件被簡化,包含導(dǎo)航、頭部和主內(nèi)容三個組件。 Home.vue HeadBar.vue MenuBar.vue Main.vue 國際化語言切換也被封裝成為了組

    2024年02月09日
    瀏覽(27)
  • Vue + Element UI 前端篇(十五):嵌套外部網(wǎng)頁

    Vue + Element UI 前端篇(十五):嵌套外部網(wǎng)頁

    在有些時候,我們需要在我們的內(nèi)容欄主區(qū)域顯示外部網(wǎng)頁。如查看服務(wù)端提供的SQL監(jiān)控頁面,接口文檔頁面等。 這個時候就要求我們的導(dǎo)航菜單能夠解析嵌套網(wǎng)頁的URL,并根據(jù)URL路由到相應(yīng)的嵌套組件。接下來我們就講解具體實現(xiàn)方案。 實現(xiàn)原理 1. 給菜單URL添加嵌套網(wǎng)頁

    2024年02月08日
    瀏覽(30)
  • Vue + Element UI 前端篇(九):接口格式定義

    Vue + Element UI 前端篇(九):接口格式定義

    前臺顯示需要后臺數(shù)據(jù),我們這里先把前后端交互接口定義好,沒有后臺的時候,也方便用mock模擬。 接口定義遵循幾個規(guī)范: 1. 接口按功能模塊劃分。 系統(tǒng)登錄:登錄相關(guān)接口 用戶管理:用戶管理相關(guān)接口 機構(gòu)管理:機構(gòu)管理相關(guān)接口 角色管理 : 角色管理相關(guān)接口 菜單

    2024年02月09日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包