本文參考自https://blog.jam00.com/article/info/54.html。
網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)公司擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺(jué)化效果。
? 最近,基于vue admin template做了個(gè)demo,在它基礎(chǔ)上對(duì)某些菜單加了頁(yè)面權(quán)限控制,但是現(xiàn)在刷新做了權(quán)限控制的頁(yè)面后,就404了,沒(méi)加權(quán)限控制的是正常的。經(jīng)過(guò)一番查找,發(fā)現(xiàn)是因?yàn)?vuex 中 sotre 存儲(chǔ)的內(nèi)容會(huì)在刷新頁(yè)面時(shí)丟失導(dǎo)致的。
??
雖然將?next({ ...to, replace: true }) 改為?next({ path: '/' }) 也能解決問(wèn)題,但是體驗(yàn)不好,一刷新就跳轉(zhuǎn)到首頁(yè),關(guān)于next?參考
刷新頁(yè)面時(shí)打印?to.path和from.path 都是 /,無(wú)法獲取上一次路由
不過(guò)發(fā)現(xiàn)使用?window.location.href 可以獲取,這就好辦了
使用方法GetUrlRelativePath獲取路由( /utils/common.js)
1 2 3 4 5 6 7 8 9 10 11 | export?function?GetUrlRelativePath(url)?{ ??var?arrUrl?=?url.split('//') ???var?start?=?arrUrl[1].indexOf('/') ??var?relUrl?=?arrUrl[1].substring(start) ???if?(relUrl.indexOf('?')?!==?-1)?{ ????relUrl?=?relUrl.split('?')[0] ??} ??return?relUrl } |
獲取刷新前的訪問(wèn)路由
1 | const?fromPath?=?GetUrlRelativePath(window.location.href) |
獲取用戶的權(quán)限,動(dòng)態(tài)加載路由
然后跳轉(zhuǎn)到刷新前的路由
1 | next({?path:?fromPath?}) |
改動(dòng)后如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | router.beforeEach((to,?from,?next)?=>?{ ??NProgress.start() ??if?(getToken())?{ ????if?(to.path?===?'/login')?{ ??????next({?path:?'/'?}) ??????NProgress.done()?//?if?current?page?is?home?will?not?trigger?? afterEach?hook,?so?manually?handle?it ????}?else?{ ??????const?fromPath?=?GetUrlRelativePath(window.location.href) ??????if?(store.getters.roles.length?===?0)?{ ????????store.dispatch('GetInfo').then(res?=>?{?//?拉取用戶信息 ??????????const?roles?=?res.data.roles ??????????store.dispatch('GenerateRoutes',?{?roles?}).then(()?=>?{?//?生成可訪問(wèn)的路由表 ????????????router.addRoutes(store.getters.addRouters)?//?動(dòng)態(tài)添加可訪問(wèn)路由表 ????????????next({?path:?fromPath?}) ??????????}) ????????}).catch((err)?=>?{ ??????????store.dispatch('FedLogOut').then(()?=>?{ ????????????Message.error(err?||?'Verification?failed,?please?login?again') ????????????next({?path:?'/'?}) ??????????}) ????????}) ??????}?else?{ ????????next() ??????} ????} ??}?else?{ ????if?(whiteList.indexOf(to.path)?!==?-1)?{ ??????next() ????}?else?{ ??????next(`/login?redirect=${to.path}`)?//?否則全部重定向到登錄頁(yè) ??????NProgress.done() ????} ??} }) |
網(wǎng)頁(yè)題目:基于vue-admin-template開發(fā)的項(xiàng)目,在加了基于角色的權(quán)限控制后,刷新頁(yè)面就跳404
分享鏈接:http://m.newbst.com/article28/gsegjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、App開發(fā)、品牌網(wǎng)站建設(shè)、定制開發(fā)、營(yíng)銷型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)