ver-router 提供的導(dǎo)航守衛(wèi)通過跳轉(zhuǎn)或取消的方式進(jìn)行守衛(wèi)導(dǎo)航。
可以通過全局的、單個(gè)路由獨(dú)享的、組件級(jí)的
全局前置守衛(wèi)
router.beforeEach
to: Route: 即將要進(jìn)入的目標(biāo) 路由對(duì)象from: Route: 當(dāng)前導(dǎo)航正要離開的路由next: Function: 一定要調(diào)用該方法來(lái) resolve 這個(gè)鉤子。執(zhí)行效果依賴next方法的調(diào)用參數(shù)。
next(): 進(jìn)行管道中的下一個(gè)鉤子。如果全部鉤子執(zhí)行完了,則導(dǎo)航的狀態(tài)就是 confirmed (確認(rèn)的)。
next(false): 中斷當(dāng)前的導(dǎo)航。如果瀏覽器的 URL 改變了 (可能是用戶手動(dòng)或者瀏覽器后退按鈕),那么 URL 地址會(huì)重置到from路由對(duì)應(yīng)的地址。
next('/')或者next({ path: '/' }): 跳轉(zhuǎn)到一個(gè)不同的地址。當(dāng)前的導(dǎo)航被中斷,然后進(jìn)行一個(gè)新的導(dǎo)航。你可以向next傳遞任意位置對(duì)象,且允許設(shè)置諸如replace: true、name: 'home'之類的選項(xiàng)以及任何用在router-link的toprop 或router.push中的選項(xiàng)。
next(error): (2.4.0+) 如果傳入next的參數(shù)是一個(gè)Error實(shí)例,則導(dǎo)航會(huì)被終止且該錯(cuò)誤會(huì)被傳遞給router.onError()注冊(cè)過的回調(diào)。
進(jìn)行驗(yàn)證
router.beforeEach((to, from , next)=>{
// console.log(store.getters.getUser)
let user = JSON.parse(sessionStorage.store).user
if(user.token == "" && to.name !== "login"){
next({ name: 'login' })
}else{
next()
}
})