最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于Vue中的全局導航守衛(wèi)(beforeEach、afterEach)

 更新時間:2022年07月28日 10:03:31   作者:YaaLee_  
這篇文章主要介紹了關于Vue中的全局導航守衛(wèi)(beforeEach、afterEach),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

全局導航守衛(wèi)(beforeEach、afterEach)

在項目開發(fā)中每一次路由的切換或者頁面的刷新都需要判斷用戶是否已經登錄,前端可以判斷,后端也會進行判斷的,我們前端最好也進行判斷。

vue-router 提供了導航鉤子:全局前置導航鉤子 beforeEach 和全局后置導航鉤子 afterEach,他們會在路由即將改變前和改變后進行觸發(fā)。所以判斷用戶是否登錄需要在 beforeEach 導航鉤子中進行判斷。

導航鉤子有3個參數(shù)

1、to:即將要進入的目標路由對象;

2、from:當前導航即將要離開的路由對象;

3、next :調用該方法后,才能進入下一個鉤子函數(shù)(afterEach)。

next()//直接進to 所指路由
next(false) //中斷當前路由
next('route') //跳轉指定路由
next('error') //跳轉錯誤路由

beforeEach

實現(xiàn)用戶驗證的代碼:

router.beforeEach((to, from, next) => {
? ? ? //我在這里模仿了一個獲取用戶信息的方法
? ?let isLogin = window.sessionStorage.getItem('userInfo');
? ? ? if (isLogin) {
? ? ? ? ? //如果用戶信息存在則往下執(zhí)行。
? ? ? ? ? next()
? ? ? } else {
? ? ? ? ? //如果用戶token不存在則跳轉到login頁面
? ? ? ? ? if (to.path === '/login') {
? ? ? ? ? ? ?next()
? ? ? ? ?} else {
? ? ? ? ? ? ?next('/login')
? ? ? ? ?}
? ? ?}?
?})

afterEach

和 beforeEach 不同的是 afterEach 不接收第三個參數(shù) next 函數(shù),也不會改變導航本身,一般 beforeEach 用的最多,afterEach 用的少

router.afterEach((to,from)=>{ //這里不接收next
? ? console.log(to);
? ? console.log(from);
})

全局導航守衛(wèi)是干什么的?

應用場景: 登錄頁面防止用戶頁面直接在地址欄中可以訪問其他頁面;

背景: 在 地址欄當中輸入地址可以訪問其他頁面;然而我們需要一個系統(tǒng)當中來進行攔截;

那就是全局導航守衛(wèi)來進行攔截, 用vue-Router 實例的方法來實現(xiàn)的;

1.在router中的index.js文件里引入vue-router

import Router from 'vue-router'
Vue.use(Router)

2.創(chuàng)建路由實例

const router = new Router({
  routes: [
    { path: '/', redirect: '/login' },
    { path: '/login', component: Login },
    { path: '/home', component: Home}
  ]
})

3.掛載全局導航守衛(wèi)

//全局路由前置守衛(wèi) --路由攔截
router.beforeEach((to, from, next) => {
  // to  將要前往的路由
  //from 從哪個路由過來的
  //next(path) 是一個函數(shù)  表示繼續(xù)執(zhí)行下一步,強制執(zhí)行前往的path 路由
 
  //如果前往login 頁面  則不需要token 直接進入就可以
  if (to.path === "/login") return next();
 
  //獲取token
  const TOKEN = window.sessionStorage.getItem("TOKEN");
  if (!TOKEN) {
    //token 不存在  name 意味著 沒有進行登錄  返回登錄頁面
    next({ path: "/login" });
  }
  //已經 存在TOKEN  name 就可以進行
  next();
});

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

平邑县| 金阳县| 金乡县| 股票| 青神县| 台湾省| 濮阳市| 含山县| 乌兰察布市| 湘乡市| 塘沽区| 新干县| 江山市| 南昌县| 静乐县| 大田县| 武汉市| 乳山市| 分宜县| 盐山县| 正定县| 济南市| 固原市| 平昌县| 敦化市| 砀山县| 金堂县| 承德市| 仲巴县| 沧源| 乌兰县| 丽水市| 上高县| 盖州市| 玉溪市| 封开县| 中西区| 新丰县| 绍兴县| 凤阳县| 广饶县|