vue後台管理系統,動態許可權路由怎麼寫。

2021-10-06 08:19:18 字數 2469 閱讀 9968

做後台管理系統,我們經常需要對各個使用者進行許可權的管理,不同許可權的使用者所能看到的頁面也不相同,那麼我們應該怎麼做呢。下面,我說說我近期的實戰案例。

寫路由這一步正常寫就行,沒什麼特別的地方

,,

children:

},, redirect:

"/index/test1"

, children:[,

]},,

]},

路由怎麼寫就不過多贅述了,相信會看這篇文章的,路由也都會寫。

這也很簡單,將你配好的各種路由對應哪個頁面的資訊發給後端就行,後端需要進行配置,用於在不同許可權的人登入時返回你不同的有許可權的路由資訊。

返回資訊有多種,可以使name,也可以是數字,這個沒有固定的,自認為自己怎麼好弄怎麼來,我一般直接讓後端直接返給我有許可權的路徑陣列。

import

from

"@/router/index"

;import lodash from

"lodash"

;const routerdata =

, mutations:},

actions:

, options)

// 通過遞迴路由表,刪除掉沒有許可權的路由

function

eachselect

(routers, componentname)if(

componentname.

indexof

(item.path)==-

1&&routers[routers.

findindex

(v => v.name === item.name)

].children

.length ==0)

});}

function

getmenucode

(menu)

else})

;}return menus;

}var menus =

getmenucode

(options.menus)

;eachselect

(defaultrouter, menus)

;commit

("setrouters"

, addrouter);}

}};export

default routerdata;

執行順序:newroutes=>路由無值=>getmenucode=>eachselect=>commit

想要看懂流程請先了解findindex,indexof,splice

login()

;this

.loading =

true

;//改變loading狀態

sign

(data)

.then

(res =>);

that.$router.

push()

;this

.$notify()

;}else);

}this

.loading =

false;}

).catch

(err =>);

this

.loading =

false;}

);},

儲存使用者資訊方法

setrole

(state, options)

; sessionstorage.

setitem

("info"

,json

.stringify

(store.getters.info));

//儲存使用者資訊到快取

store.

dispatch

("newroutes",)

; router.

addroutes

(store.getters.addrouters)

;//這裡是新增無需驗證的動態路由

},

router.

beforeeach

((to,

from

, next)

=>

else);

})()

;next()

;}else);

}}}else

else);

}}})

;

在vuex中獲取info的問題

state:

,

1、使用者登入

2、儲存返回的使用者資訊和許可權路由(vuex和快取)

3、觸發路由守衛,呼叫路由篩選

4、根據資料,刪除無許可權的路由資訊

5、返回篩選後的路由資訊

6、渲染路由和頁面

7、重新整理觸發3-6

vue後台管理系統動態路由的實現

每個使用者登入後台管理系統看到的側邊欄,訪問的路由都不一樣 一般有兩種方法 第一種是前端寫死路由,如果使用者沒有這個路由許可權,就顯示你沒有訪問許可權,但這種看到側邊欄有這個模組但看不到就不太好,所以這裡講第二種方法 第二種是由後端傳動態路由給前端,具體實現如下 第一步 首先確定靜態路由,我單獨寫了...

vue 後台系統許可權管理

最近在做乙個後台管理系統,一般的後台系統都有許可權管理這塊,下面我就分享下我實現許可權管理這塊的思路。首先說下這個系統前端用到的技術棧,vue全家桶,element ui,axios。首先,使用者的許可權是通過前端來進行配置的,那麼就需要乙個頁面去進行使用者的許可權配置。在使用者登入之後,通過請求後...

vue 許可權管理 動態路由(6)

1.動態生成路由 import vue from vue import router from vue router import nprogress from nprogress progress bar import nprogress nprogress.css progress bar st...