最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

我們希望還有更簡(jiǎn)單的方式。這個(gè)時(shí)候梳理一下需求,我們的主要目標(biāo)是:

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

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

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

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

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

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

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

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

具體可以參考[文檔]。

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

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

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

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

相關(guān)文章

  • vue計(jì)時(shí)器的實(shí)現(xiàn)方法

    vue計(jì)時(shí)器的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了vue計(jì)時(shí)器的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 在Vue中進(jìn)行性能優(yōu)化的幾種常用方法

    在Vue中進(jìn)行性能優(yōu)化的幾種常用方法

    隨著前端技術(shù)的飛速發(fā)展,Vue.js作為一個(gè)流行的JavaScript框架,已經(jīng)被廣泛應(yīng)用于構(gòu)建現(xiàn)代Web應(yīng)用,然而,隨著應(yīng)用的復(fù)雜性和規(guī)模的增加,性能優(yōu)化也成為開發(fā)者必須面對(duì)的重要任務(wù),在本篇博客中,我們將探討幾種常用的Vue性能優(yōu)化方法,需要的朋友可以參考下
    2024-12-12
  • vue父子組件的互相傳值和調(diào)用

    vue父子組件的互相傳值和調(diào)用

    這篇文章主要介紹了vue父子組件的互相傳值和調(diào)用,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • Vue父子組件傳值的一些坑

    Vue父子組件傳值的一些坑

    這篇文章主要介紹了Vue父子組件傳值的一些坑,幫助大家更好的理解和使用vue父子組件,感興趣的朋友可以了解下
    2020-09-09
  • Vue的data為啥只能是函數(shù)原理詳解

    Vue的data為啥只能是函數(shù)原理詳解

    這篇文章主要為大家介紹了Vue的data為啥只能是函數(shù)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Vue?warn:Property?"state"?was?accessed?during?render解決

    Vue?warn:Property?"state"?was?accessed?during

    這篇文章主要為大家介紹了Vue?warn:Property?"state"?was?accessed?during?render的報(bào)錯(cuò)解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Vue3封裝實(shí)現(xiàn)右鍵菜單組件

    Vue3封裝實(shí)現(xiàn)右鍵菜單組件

    這篇文章主要為大家詳細(xì)介紹了Vue3封裝實(shí)現(xiàn)右鍵菜單組件的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下
    2025-02-02
  • 如何解決ECharts圖表切換后縮成一團(tuán)的問題

    如何解決ECharts圖表切換后縮成一團(tuán)的問題

    這篇文章主要介紹了如何解決ECharts圖表切換后縮成一團(tuán)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 如何以拖拽方式生成Vue用戶界面

    如何以拖拽方式生成Vue用戶界面

    這篇文章主要給大家介紹了關(guān)于如何以拖拽方式生成Vue用戶界面的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • vue-loader教程介紹

    vue-loader教程介紹

    本篇文章主要介紹了vue-loader教程介紹,vue-loader就是告訴webpack如何將vue格式的文件轉(zhuǎn)換成js。有興趣的可以了解一下
    2017-06-06

最新評(píng)論

景洪市| 康马县| 昌乐县| 读书| 水富县| 蕲春县| 蒲城县| 东明县| 合肥市| 耒阳市| 体育| 外汇| 抚顺市| 滕州市| 长沙市| 色达县| 无极县| 红河县| 桐城市| 杭锦后旗| 闸北区| 遵化市| 海伦市| 桦甸市| 习水县| 钟祥市| 南华县| 黄大仙区| 博兴县| 金山区| 成安县| 开原市| 武威市| 清新县| 阿尔山市| 东至县| 米脂县| 公主岭市| 佛教| 聂荣县| 禹州市|