欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue-router權(quán)限控制(簡單方式)

 更新時間:2018年10月29日 14:45:46   作者:Kant_14  
這篇文章主要介紹了vue-router權(quán)限控制(簡單方式),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在vue-router控制前端權(quán)限是常見需求:

  1. 有一種做法是直接在后端完成判斷,提供頁面列表和操作列表,在前端進行渲染,但這個方案并不優(yōu)雅,前后端耦合度比較高。
  2. 比較常見的做法是把登錄頁面獨立在router之外,專門寫一個權(quán)限控制文件,在登錄之后根據(jù)用戶權(quán)限加載router,之后把權(quán)限作為參數(shù)傳入各種組件中,以控制元素的渲染。這個方法比較合理,沒有什么額外的開銷,只是需要獨立寫一個登錄頁面和權(quán)限控制文件比較麻煩一些,特別是對一些小項目而言。

我們希望還有更簡單的方式。這個時候梳理一下需求,我們的主要目標是:

  1. 菜單欄控制,根據(jù)權(quán)限渲染可以進入的頁面菜單;
  2. 操作按鈕權(quán)限控制,沒有操作權(quán)限的不予顯示;
  3. 如果有人通過直接點擊鏈接或輸入地址進入沒有權(quán)限的頁面,則進行攔截;

第一、第二個目標是容易實現(xiàn)的,把權(quán)限列表傳入對應(yīng)組件,通過v-if判斷即可,需要解決的是越權(quán)頁面的攔截問題。在上面常見的做法中,為了實現(xiàn)攔截,單獨寫了一個登錄頁面,登錄之后再根據(jù)權(quán)限加載路由,這樣,沒有權(quán)限的路由根本不會加載,于是被導(dǎo)向404頁面。

那么,現(xiàn)在的問題是,怎么樣會有更簡單的方式?

顯然,如果我們不想單獨寫login頁面,那么router在登錄前就完成加載了。如果無法通過router自動將越權(quán)頁面導(dǎo)向404頁面,我們能做的,只能手動引導(dǎo)了。思路清楚了,實現(xiàn)起來就毫無壓力:

根據(jù)vue組件的生命周期,我們可以在mounted鉤子上進行權(quán)限判斷,如果通過props傳入的用戶權(quán)限列表沒有對應(yīng)權(quán)限,就跳轉(zhuǎn)頁面到404:

mounted () {
     if (!this.check_user_privilege (current_page)) {
       this.$Message.error('權(quán)限不足');
       this.$router.push('404');
     }
 }

當然,事實上vue-router也提供了頁面跳轉(zhuǎn)時的鉤子方法,全局的有beforeEach、afterEach等,我們希望直接在組件內(nèi)使用,則可以使用beforeRouteEnter方法,在進入頁面時進行判斷,比如:

beforeRouteEnter (to, from, next) {
     next(vm => {
       if (!vm.check_user_privilege (current_page)) {
         vm.$Message.error('權(quán)限不足');
         vm.$router.push('404');
       }
     })
   },

具體可以參考[文檔]。

當然,就這個例子來說,用vue-router提供的鉤子還不如直接在mounted寫判斷條件,因為beforeRouteEnter方法中的next需要調(diào)用組件參數(shù),是在mounted執(zhí)行之后才執(zhí)行的,而我們又經(jīng)常需要在mounted鉤子加載頁面數(shù)據(jù),為了避免浪費,先進行判斷是比較好的。

和常用方法相比,簡單方法是有額外開銷的,主要在于需要完全加載路由,同時在加載頁面后進行了一次判斷。不過從寫代碼的角度來說,似乎邏輯上更節(jié)約,因為不用另外寫一個集中進行權(quán)限控制的文件了,至于每個頁面的權(quán)限判斷,那是本來在菜單欄就要做的事情,延伸到不同頁面也不算什么負擔(dān)。

會不會有什么副作用呢?暫時來看似乎是沒有的,如果在mounted最開始就進行頁面權(quán)限判斷,也不會有加載越權(quán)數(shù)據(jù)的問題,況且數(shù)據(jù)權(quán)限是后端需要單獨判斷的,不應(yīng)該讓前端去擔(dān)心。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue+ECharts+高德地圖API實現(xiàn)天氣預(yù)報數(shù)據(jù)可視化的教程

    Vue+ECharts+高德地圖API實現(xiàn)天氣預(yù)報數(shù)據(jù)可視化的教程

    所謂數(shù)據(jù)可視化,我們可以理解為從宏觀角度來看一眼就能看出來整個數(shù)據(jù)的占比,走向,對于數(shù)據(jù)可視化,很多互聯(lián)網(wǎng)公司是很看重這一塊的,包括大廠,本就將給大家介紹如何通過Vue+ECharts+高德地圖API實現(xiàn)天氣預(yù)報數(shù)據(jù)可視化
    2023-06-06
  • vue-cli3 karma單元測試的實現(xiàn)

    vue-cli3 karma單元測試的實現(xiàn)

    這篇文章主要介紹了vue-cli3 karma單元測試的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 淺談Vuejs中nextTick()異步更新隊列源碼解析

    淺談Vuejs中nextTick()異步更新隊列源碼解析

    本篇文章主要介紹了淺談Vuejs中nextTick()異步更新隊列源碼解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Ant?Design?Vue?修改表格頭部樣式的詳細代碼

    Ant?Design?Vue?修改表格頭部樣式的詳細代碼

    這篇文章主要介紹了Ant?Design?Vue?修改表格頭部樣式,首先用到的是customHeaderRow這個API,類型是一個函數(shù),本文通過完整代碼給大家詳細講解,需要的朋友可以參考下
    2022-10-10
  • 詳解vue服務(wù)端渲染瀏覽器端緩存(keep-alive)

    詳解vue服務(wù)端渲染瀏覽器端緩存(keep-alive)

    在使用服務(wù)器端渲染時,除了服務(wù)端的接口緩存、頁面緩存、組建緩存等,瀏覽器端也避免不了要使用緩存,減少頁面的重繪。這篇文章主要介紹了詳解vue服務(wù)端渲染瀏覽器端緩存(keep-alive),感興趣的小伙伴們可以參考一下
    2018-10-10
  • Vue路由自動添加#的問題及解決

    Vue路由自動添加#的問題及解決

    這篇文章主要介紹了Vue路由自動添加#的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 解決element-ui中Popconfirm氣泡確認框的事件不生效問題

    解決element-ui中Popconfirm氣泡確認框的事件不生效問題

    這篇文章主要介紹了解決element-ui中Popconfirm氣泡確認框的事件不生效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue Object 的變化偵測實現(xiàn)代碼

    Vue Object 的變化偵測實現(xiàn)代碼

    這篇文章主要介紹了Vue Object的變化偵測實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 詳解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 構(gòu)建記事本應(yīng)用

    詳解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 構(gòu)建記事本應(yīng)用

    本篇文章主要介紹了詳解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 構(gòu)建記事本應(yīng)用 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Vue + ts實現(xiàn)輪播插件的示例

    Vue + ts實現(xiàn)輪播插件的示例

    這篇文章主要介紹了Vue + ts實現(xiàn)輪播插件的示例,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-11-11

最新評論