Vue布置導(dǎo)航守衛(wèi)獲取用戶信息
需求
在工作中遇到了管理員配置角色菜單的需求:
假設(shè),用戶登陸系統(tǒng)后有一個(gè)系統(tǒng)管理模塊,而點(diǎn)擊系統(tǒng)管理默認(rèn)被定位到角色管理菜單。
但是要求除管理員外的其他用戶不展示角色管理菜單。
管理員通過設(shè)置,向后端傳遞的值中不包含角色管理(設(shè)置后端路由,取消其他用戶的角色管理菜單)。
此時(shí)其他用戶登陸并進(jìn)入系統(tǒng)管理模塊后不展示角色管理菜單,但內(nèi)容仍是角色管理頁面(因?yàn)槟J(rèn)定位到角色管理);
此時(shí)需要前端對路由進(jìn)行限制,這就需要用到守衛(wèi)。
守衛(wèi)的作用是將管理員用戶定位到角色管理頁面,其它用戶定位到其它頁面。
實(shí)現(xiàn)
在實(shí)現(xiàn)時(shí)遇到了一些問題:
- 1.考慮選用哪種守衛(wèi)(全局、路由獨(dú)享)
- 2.如何判斷當(dāng)前用戶是否為管理員用戶
- 3.怎么獲取用戶信息
剛開始總覺得沒有必要去添加全局守衛(wèi),然后嘗試使用路由守衛(wèi)去做。由于項(xiàng)目在vuex中存儲了用戶信息,所以在路由獨(dú)享守衛(wèi)中嘗試使用$store去拿,結(jié)果并拿不到。
然后使用全局守衛(wèi),同樣的方式拿用戶信息,發(fā)現(xiàn)也不行。后來上網(wǎng)找解決方案。結(jié)果就是,先給Vue實(shí)例來個(gè)變量名,方便在守衛(wèi)中獲取它。然后再vue實(shí)例中通過$store的方式拿到用戶信息。
代碼如下
main.js
router.beforeEach((to, from, next) => { if (to.path === "/system/base/role") { if (vue.$store.state.userInfo.roleInfoList[0].roleCode !== "admin") {~~~~ next({path: "/system/target/std"}) } } next() }) let vue = new Vue({ router, store, render: (h) => h(App), }).$mount("#app");
Keep foolish, keep hungry.
以上就是Vue布置導(dǎo)航守衛(wèi)獲取用戶信息的詳細(xì)內(nèi)容,更多關(guān)于Vue導(dǎo)航獲取用戶信息的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue element-ui el-table組件自定義合計(jì)(summary-method)的坑
這篇文章主要介紹了vue element-ui el-table組件自定義合計(jì)(summary-method)的坑及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02解決vue項(xiàng)目打包上服務(wù)器顯示404錯(cuò)誤,本地沒出錯(cuò)的問題
這篇文章主要介紹了解決vue項(xiàng)目打包上服務(wù)器顯示404錯(cuò)誤,本地沒出錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11詳解vue2.0 transition 多個(gè)元素嵌套使用過渡
這篇文章主要介紹了詳解vue2.0 transition 多個(gè)元素嵌套使用過渡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06