欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue中頁(yè)面跳轉(zhuǎn)攔截器的實(shí)現(xiàn)方法

 更新時(shí)間:2017年08月23日 08:38:58   作者:zhangwenwu  
這篇文章主要給大家介紹了關(guān)于vue中頁(yè)面跳轉(zhuǎn)攔截器的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。

本文主要給大家介紹的是關(guān)于vue頁(yè)面跳轉(zhuǎn)攔截器的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:

登錄攔截邏輯

第一步:路由攔截

首先在定義路由的時(shí)候就需要多添加一個(gè)自定義字段requireAuth,用于判斷該路由的訪問是否需要登錄。如果用戶已經(jīng)登錄,則順利進(jìn)入路由, 否則就進(jìn)入登錄頁(yè)面。在路由管理頁(yè)面添加meta字段

import Vue from 'vue'
import Router from 'vue-router'


Vue.use(Router)


const routes = [
 {
 path: '/',
 name: "歡迎",
 meta: {
   requireAuth: true, // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
  },
 component: resolve => require(["../components/Hello.vue"], resolve)
 },
 {
 path: '/login',
 name: "登錄",
 /*meta: {
   requireAuth: false, // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
  },*/
 component: resolve => require(["../view/login/login.vue"], resolve)
 }
]


export default new Router({
 base: "/",
 routes
})

定義完路由后,我們主要是利用vue-router提供的鉤子函數(shù)beforeEach()對(duì)路由進(jìn)行判斷。

所以在main.js加上

router.beforeEach((to, from, next) => {
 if (to.meta.requireAuth) { // 判斷該路由是否需要登錄權(quán)限
  if (store.state.token) { // 通過vuex state獲取當(dāng)前的token是否存在
   next();
  }
  else {
   next({
    path: '/login',
    query: {redirect: to.fullPath} // 將跳轉(zhuǎn)的路由path作為參數(shù),登錄成功后跳轉(zhuǎn)到該路由
   })
  }
 }
 else {
  next();
 }
})

每個(gè)鉤子方法接收三個(gè)參數(shù):

     * to: Route: 即將要進(jìn)入的目標(biāo) 路由對(duì)象

     * from: Route: 當(dāng)前導(dǎo)航正要離開的路由

     * next: Function: 一定要調(diào)用該方法來 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)航。

確保要調(diào)用 next 方法,否則鉤子就不會(huì)被 resolved。

其中,to.meta中是我們自定義的數(shù)據(jù),其中就包括我們剛剛定義的requireAuth字段。通過這個(gè)字段來判斷該路由是否需要登錄權(quán)限。需要的話,同時(shí)當(dāng)前應(yīng)用不存在token,則跳轉(zhuǎn)到登錄頁(yè)面,進(jìn)行登錄。登錄成功后跳轉(zhuǎn)到目標(biāo)路由。

完成后,我們可以在登錄頁(yè)面。控制用戶登錄成功后,vuex的token狀態(tài)改變就可以了

<script>
export default {
 methods:{
 login(){
  this.$store.commit('setToken','true');  //改變token狀態(tài)
  let redirect = decodeURIComponent(this.$route.query.redirect || '/'); 獲取登錄成功后要跳轉(zhuǎn)的路由。
  this.$router.push({
  path: redirect
  })
 }
 }
}
</script>

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論