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

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

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

前言

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

實現(xiàn)

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

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

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

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

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

addRoutes 方式:

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

beforeEach 方式

通過請求服務端獲取當前用戶路由配置,通過注冊 router.beforeEach 鉤子對路由的每次跳轉(zhuǎn)進行管理,每次跳轉(zhuǎn)都進行檢查,如果目標路由不存再于 基本路由 和 當前用戶的 用戶路由 中,取消跳轉(zhuǎn),轉(zhuǎn)為跳轉(zhuǎn)錯誤頁。

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

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

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

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

對于這個問題,也有一個解決辦法:

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

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

筆者做了一個小demo,大家可以去體驗一下。

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

Add option to Reset/Delete Routes #1436

Feature request: replace routes dynamically #1234

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

相關(guān)文章

  • Vue的diff算法原理你真的了解嗎

    Vue的diff算法原理你真的了解嗎

    這篇文章主要為大家詳細介紹了Vue的diff算法原理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 詳解vue 兼容IE報錯解決方案

    詳解vue 兼容IE報錯解決方案

    這篇文章主要介紹了詳解vue 兼容IE報錯解決方案,詳細的介紹了幾種原因及其解決方案,非常具有實用價值,需要的朋友可以參考下
    2018-12-12
  • vue項目中如何使用video.js實現(xiàn)視頻播放與視頻進度條打點

    vue項目中如何使用video.js實現(xiàn)視頻播放與視頻進度條打點

    這篇文章主要給大家介紹了關(guān)于vue項目中如何使用video.js實現(xiàn)視頻播放與視頻進度條打點的相關(guān)資料,video.js是一款基于HTML5的網(wǎng)絡視頻播放器,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • 使用vite搭建ssr活動頁架構(gòu)的實現(xiàn)

    使用vite搭建ssr活動頁架構(gòu)的實現(xiàn)

    本文主要介紹了使用vite搭建ssr活動頁架構(gòu),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 如何在JS文件中獲取Vue組件

    如何在JS文件中獲取Vue組件

    這篇文章主要介紹了如何在JS文件中獲取Vue組件,幫助大家更好的理解和學習前端知識,感興趣的朋友可以了解下
    2020-09-09
  • vuex的使用步驟

    vuex的使用步驟

    這篇文章主要介紹了vuex的使用步驟,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • 解決vue3項目打包發(fā)布到服務器后訪問頁面顯示空白問題

    解決vue3項目打包發(fā)布到服務器后訪問頁面顯示空白問題

    這篇文章主要介紹了解決vue3項目打包發(fā)布到服務器后訪問頁面顯示空白問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 解決element-ui?el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo

    解決element-ui?el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo

    這篇文章主要為大家介紹了解決element-ui?el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2023-06-06
  • 詳解在vue-cli項目中安裝node-sass

    詳解在vue-cli項目中安裝node-sass

    本篇文章主要介紹了詳解在vue-cli項目中安裝node-sass ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 詳解vue中使用微信jssdk

    詳解vue中使用微信jssdk

    這篇文章主要介紹了vue中使用微信jssdk,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04

最新評論