91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于Vue的路由權限管理的示例代碼

發布時間:2020-10-17 05:10:58 來源:腳本之家 閱讀:122 作者:minfive 欄目:web開發

前言

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

實現

大體上實現的思路很簡單,先上圖:

關于Vue的路由權限管理的示例代碼

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

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

實現控制的方式分兩種:

通過vue-router addRoutes 方法注入路由實現控制
通過vue-router beforeEach 鉤子限制路由跳轉

addRoutes 方式:

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

beforeEach 方式

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

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

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

關于Vue的路由權限管理的示例代碼

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,大家可以去體驗一下。

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

Add option to Reset/Delete Routes #1436

Feature request: replace routes dynamically #1234

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阆中市| 贵阳市| 四会市| 夏邑县| 杂多县| 绍兴市| 合川市| 伊宁县| 潞城市| 浮山县| 娱乐| 托里县| 沅陵县| 六枝特区| 舞钢市| 晋中市| 峨眉山市| 龙南县| 泗水县| 和田县| 迁西县| 泰顺县| 富川| 即墨市| 海阳市| 隆回县| 上杭县| 资中县| 安西县| 高邑县| 上犹县| 方正县| 许昌市| 黄陵县| 壤塘县| 会泽县| 贞丰县| 普安县| 静宁县| 司法| 四川省|