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

關(guān)于Vue的路由權(quán)限管理的示例代碼

 更新時(shí)間:2018年03月06日 16:39:18   作者:minfive  
本篇文章主要介紹了關(guān)于Vue的路由權(quán)限管理的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前言

曾經(jīng)在工作上對(duì) vue 路由權(quán)限管理這方面有過研究,這幾天又看到了幾篇相關(guān)的文章,再加上昨天電面中又再一次提及到,就索性整理了一下自己的一些看法,希望對(duì)大家有幫助。

實(shí)現(xiàn)

大體上實(shí)現(xiàn)的思路很簡單,先上圖:

無非是將路由配置按用戶類型分割為 用戶路由 和 基本路由,不同的用戶類型可能存在不同的 用戶路由,具體依賴實(shí)際業(yè)務(wù)。

  1. 用戶路由: 當(dāng)前用戶所特有的路由
  2. 基本路由:所有用戶均可以訪問的路由

實(shí)現(xiàn)控制的方式分兩種:

通過vue-router addRoutes 方法注入路由實(shí)現(xiàn)控制
通過vue-router beforeEach 鉤子限制路由跳轉(zhuǎn)

addRoutes 方式:

通過請(qǐng)求服務(wù)端獲取當(dāng)前用戶路由配置,編碼為 vue-router 所支持的基本格式(具體如何編碼取決于前后端協(xié)商好的數(shù)據(jù)格式),通過調(diào)用 this.$router.addRoutes 方法將編碼好的用戶路由注入到現(xiàn)有的 vue-router 實(shí)例中去,以實(shí)現(xiàn)用戶路由。

beforeEach 方式

通過請(qǐng)求服務(wù)端獲取當(dāng)前用戶路由配置,通過注冊(cè) router.beforeEach 鉤子對(duì)路由的每次跳轉(zhuǎn)進(jìn)行管理,每次跳轉(zhuǎn)都進(jìn)行檢查,如果目標(biāo)路由不存再于 基本路由 和 當(dāng)前用戶的 用戶路由 中,取消跳轉(zhuǎn),轉(zhuǎn)為跳轉(zhuǎn)錯(cuò)誤頁。

以上兩種方式均需要在 vue-router 中配置錯(cuò)誤頁,以保證用戶感知權(quán)限不足。

兩種方式的原理其實(shí)都是一樣的,只不過 addRoutes 方式 通過注入路由配置告訴 vue-router :“當(dāng)前我們就只有這些路由,其它路由地址我們一概不認(rèn)”,而 beforeEach 則更多的是依賴我們手動(dòng)去幫 vue-router 辨別什么頁面可以去,什么頁面不可以去。說白了也就是 自動(dòng) 與 手動(dòng) 的差別。說到這,估計(jì)大家都會(huì)覺得既然是 自動(dòng) 的,那肯定是 addRoutes 最方便快捷了,還能簡化業(yè)務(wù)代碼,筆者一開始也是這么認(rèn)為的,但是!很多人都忽略了一點(diǎn):

addRoutes 方法僅僅是幫你注入新的路由,并沒有幫你剔除其它路由!

設(shè)想存在這么一種情況:用戶在自己電腦上登錄了管理員賬號(hào),這個(gè)時(shí)候會(huì)向路由中注入管理員的路由,然后再退出登錄,保持頁面不刷新,改用普通用戶賬號(hào)進(jìn)行登錄,這個(gè)時(shí)候又會(huì)向路由中注入普通用戶的路由,那么,在路由中將存在兩種用戶類型的路由,即使用戶不感知,通過改變 url,普通用戶也可以訪問管理員的頁面!

對(duì)于這個(gè)問題,也有一個(gè)解決辦法:

import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const createRouter = () => new Router({
 mode: 'history',
 routes: []
})
const router = createRouter()
export function resetRouter () {
 const newRouter = createRouter()
 router.matcher = newRouter.matcher
}
export default router

通過新建一個(gè)全新的 Router,然后將新的 Router.matcher 賦給當(dāng)前頁面的管理 Router,以達(dá)到更新路由配置的目的。

筆者做了一個(gè)小demo,大家可以去體驗(yàn)一下。

關(guān)于上述問題,在vue-router 的 github issues 下有過討論,分別是:

Add option to Reset/Delete Routes #1436

Feature request: replace routes dynamically #1234

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

相關(guān)文章

  • Vue Router中獲取路由傳遞過來的參數(shù)(方法詳解)

    Vue Router中獲取路由傳遞過來的參數(shù)(方法詳解)

    在VueRouter中,可以通過動(dòng)態(tài)路由匹配和查詢參數(shù)`query`來傳遞參數(shù),并將路由參數(shù)或查詢參數(shù)作為組件的`props`傳遞,動(dòng)態(tài)路由匹配使用`route.params`訪問參數(shù),查詢參數(shù)使用`route.query`訪問,本文給大家介紹Vue Router中獲取路由傳遞過來的參數(shù),感興趣的朋友一起看看吧
    2025-02-02
  • vue+導(dǎo)航錨點(diǎn)聯(lián)動(dòng)-滾動(dòng)監(jiān)聽和點(diǎn)擊平滑滾動(dòng)跳轉(zhuǎn)實(shí)例

    vue+導(dǎo)航錨點(diǎn)聯(lián)動(dòng)-滾動(dòng)監(jiān)聽和點(diǎn)擊平滑滾動(dòng)跳轉(zhuǎn)實(shí)例

    今天小編就為大家分享一篇vue+導(dǎo)航錨點(diǎn)聯(lián)動(dòng)-滾動(dòng)監(jiān)聽和點(diǎn)擊平滑滾動(dòng)跳轉(zhuǎn)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 簡單聊一聊axios配置請(qǐng)求頭content-type

    簡單聊一聊axios配置請(qǐng)求頭content-type

    最近在工作中碰到一個(gè)問題,后端提供的get請(qǐng)求的接口需要在request header設(shè)置,下面這篇文章主要給大家介紹了關(guān)于axios配置請(qǐng)求頭content-type的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • vue-cli系列之vue-cli-service整體架構(gòu)淺析

    vue-cli系列之vue-cli-service整體架構(gòu)淺析

    這篇文章主要介紹了vue-cli系列之vue-cli-service整體架構(gòu)淺析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • Vue3中props傳參方式詳解

    Vue3中props傳參方式詳解

    這篇文章主要為大家詳細(xì)介紹了Vue3中props傳參方式(多種數(shù)據(jù)類型傳參方式)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • vue前端路由以及vue-router兩種模式實(shí)例詳解

    vue前端路由以及vue-router兩種模式實(shí)例詳解

    路由這個(gè)概念最先是后端出現(xiàn)的,下面這篇文章主要給大家介紹了關(guān)于vue前端路由以及vue-router兩種模式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • 從零擼一個(gè)pc端vue的ui組件庫( 計(jì)數(shù)器組件 )

    從零擼一個(gè)pc端vue的ui組件庫( 計(jì)數(shù)器組件 )

    這篇文章主要介紹了pc端vue的ui組件庫的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • vue項(xiàng)目實(shí)現(xiàn)左滑刪除功能(完整代碼)

    vue項(xiàng)目實(shí)現(xiàn)左滑刪除功能(完整代碼)

    最近在開發(fā)移動(dòng)端項(xiàng)目,通過向左滑動(dòng)出現(xiàn)刪除按鈕,點(diǎn)擊即可刪除,怎么實(shí)現(xiàn)這個(gè)功能呢,接下來小編給大家?guī)韺?shí)例代碼幫助大家學(xué)習(xí)vue項(xiàng)目實(shí)現(xiàn)左滑刪除功能,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • vue動(dòng)態(tài)設(shè)置路由權(quán)限的主要思路

    vue動(dòng)態(tài)設(shè)置路由權(quán)限的主要思路

    這篇文章主要給大家介紹了關(guān)于vue動(dòng)態(tài)設(shè)置路由權(quán)限的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解刷新頁面vuex數(shù)據(jù)不消失和不跳轉(zhuǎn)頁面的解決

    詳解刷新頁面vuex數(shù)據(jù)不消失和不跳轉(zhuǎn)頁面的解決

    這篇文章主要介紹了詳解刷新頁面vuex數(shù)據(jù)不消失和不跳轉(zhuǎn)頁面的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01

最新評(píng)論

舞阳县| 包头市| 胶州市| 梅河口市| 黔南| 安新县| 台北市| 宜丰县| 屏东县| 循化| 雷波县| 北安市| 汝州市| 张家口市| 浏阳市| 英吉沙县| 绩溪县| 常德市| 康平县| 宿迁市| 巫溪县| 鹿泉市| 临桂县| 昌平区| 林口县| 常山县| 商都县| 华亭县| 台南县| 灵台县| 鄂州市| 新乡市| 博罗县| 济源市| 夏津县| 阜新市| 勐海县| 讷河市| 东兰县| 德安县| 贵定县|