通常在項(xiàng)目里,我們需要用戶進(jìn)行登錄,才能讓用戶查看項(xiàng)目。
在后臺(tái)管理系統(tǒng)中,會(huì)根據(jù)不同的用戶權(quán)限展示不同的內(nèi)容。
在用戶訪問頁(yè)面之前,我們通過全局前置守衛(wèi)對(duì)路由進(jìn)行攔截,看看你是不是可以通過。
通過的標(biāo)準(zhǔn)是否登錄,如果登錄就通過放行,沒有通過就打回。
// 不需要路由驗(yàn)證頁(yè)面 const whiteList = ['login', 'index'] router.beforeEach((to, from, next) => { // 確定用戶是否已登錄 const hasToken = false // 這里就是路由是否通過標(biāo)準(zhǔn),一般都是通過token來(lái)驗(yàn)證 if (hasToken) { // 登錄 if (to.path === '/login') { // 如果已登錄,請(qǐng)重定向到主頁(yè) next({ path: '/index' }) return } next() } else { if (whiteList.indexOf(to.name) !== -1) { // 在免費(fèi)登錄白名單中,直接進(jìn)入 next() } else { // 沒有訪問權(quán)限的其他頁(yè)將重定向到登錄頁(yè)。
next(`/login`) } } }) 需要注意的一點(diǎn)是,用戶沒有登錄,是需要跳轉(zhuǎn)到登錄頁(yè)面,如果在白名單里面沒有登錄頁(yè)或者沒有next(),頁(yè)面一直跳轉(zhuǎn)直到內(nèi)存溢出。
每個(gè)項(xiàng)目的驗(yàn)證是否擁有權(quán)限不一樣,權(quán)限判斷那一塊可以根據(jù)自己的實(shí)項(xiàng)目需求來(lái)進(jìn)行操作。