上一篇我們已經封裝好了cookie方法,登錄成功之后也可以吧用戶信息存到cookie中,接下來需要在router/index.js中引入一下cookie.js文件
然后繼續添加以下代碼
/*
* beforeEach:從一個頁面跳轉到另外一個頁面時觸發
* to:要跳轉的頁面
* from:從哪個頁面出來
* next:決定是否通過
*/
router.beforeEach((to, from, next) => {
// 如果跳轉的頁面不存在,跳轉到404頁面
if(to.matched.length===0){
next('/404')
}
if (cookie.getCookie("openId")) {
next()
} else {
if (to.path === "/Login") {
next()
} else {
next('/Login')
}
}
})
router.beforeEach意思是在router.index設置了一個全局守衛,只要發生頁面跳轉,會執行里面的代碼,首先先去判斷跳轉的頁面是否存在,如果不存在進到404頁面,然后調用cookie.getCookie()方法讀取用戶信息,如果不存在代表沒有登錄,用next('/Login')進入Login登錄頁面進行登錄,如果讀取到了用戶信息,不做攔截直接放行。
擴展
全局后置鈎子
router.afterEach((to,from)=>{}),表示從當前頁面離開時進行判斷,一般用來跳轉頁面時提示用戶是否離開該頁面。