溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

vue router+vuex如何實(shí)現(xiàn)首頁(yè)登錄驗(yàn)證判斷邏輯

發(fā)布時(shí)間:2021-08-07 09:23:32 來源:億速云 閱讀:169 作者:小新 欄目:web開發(fā)

這篇文章主要為大家展示了“vue router+vuex如何實(shí)現(xiàn)首頁(yè)登錄驗(yàn)證判斷邏輯”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“vue router+vuex如何實(shí)現(xiàn)首頁(yè)登錄驗(yàn)證判斷邏輯”這篇文章吧。

首頁(yè)登錄邏輯要求在頁(yè)面上判斷是否獲取到登錄token ,沒有獲取到則跳轉(zhuǎn)到登錄頁(yè)。登錄成功后,跳轉(zhuǎn)到前一個(gè)頁(yè)面。

1.vue router

路由判斷首先我們想到的是router.beforeEach 前置導(dǎo)航守衛(wèi) ,這個(gè)方法接受三個(gè)參數(shù) to from next 。

to參數(shù)為即將跳轉(zhuǎn)的路由路徑,from為當(dāng)前導(dǎo)航正要離開的路由,next方法用來resolve這個(gè)鉤子。

下面以工作中寫的一個(gè)判斷為為例子:

router.beforeEach(async (to, from, next) => {
 const { name, meta } = to;
 const { requireLogin } = meta;
 if (name === 'login') { // 如果是登錄頁(yè)則用next方法resolve掉這個(gè)鉤子,如果不是,進(jìn)行到下一個(gè)判斷
  return next();  
 }
 const needLogin = requireLogin && !store.getters.user.isLogin; // 從store中讀取是否獲取了已登錄的信息
 if (needLogin) {
  return next({  // 如果沒有則跳轉(zhuǎn)到登錄頁(yè),將當(dāng)前路由路徑放到參數(shù)中
   name: 'login',
   params: { back: to },
  });
 }
 return next(); 
});

2. this.$router 與 this.$route   this.$router.push 與 this.$router.replace

在登錄頁(yè)完成登錄請(qǐng)求后進(jìn)行下面的操作

獲取路徑中存放前一個(gè)路徑的參數(shù) ,然后跳轉(zhuǎn)到該頁(yè)面

 loginSuccess() {
   const { params: { back } } = this.$route;
   const route = back || { name: 'home' };
   const { name, params, query } = route;
   this.$router.replace({ name, params, query });
  },

在上面這段代碼中出現(xiàn)了兩個(gè)我們經(jīng)?;煜母拍?

我們知道this.$router是router實(shí)例,可以用來直接訪問路由。我們稱router配置中每一個(gè)對(duì)象為一個(gè)路由記錄,this.$route是暴露出來用來訪問每個(gè)路由記錄的。因此我們獲取參數(shù)時(shí)使用的是this.$route 跳轉(zhuǎn)路由時(shí)使用的是道this.$router。

上端代碼中我們使用了replace而不是push來跳轉(zhuǎn)路由,這兩者的區(qū)別是會(huì)不會(huì)在history中產(chǎn)生記錄。replace不會(huì)新增記錄,而是直接替換掉了這條路由記錄。

以上是“vue router+vuex如何實(shí)現(xiàn)首頁(yè)登錄驗(yàn)證判斷邏輯”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI