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

vue中路由驗證和相應(yīng)攔截的使用詳解

 更新時間:2017年12月13日 11:27:48   作者:羞羞的鐵拳  
這篇文章主要為大家詳細介紹了vue中路由驗證和相應(yīng)攔截的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在web項目中,經(jīng)常需要根據(jù)是否登錄進行路由的驗證和相應(yīng)的攔截。

首先,在vuex里的store.js里邊寫一個存放登錄狀態(tài),代碼如下

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
 state: {
 user: false
 },
 mutations: {
 // 登錄
 login (state, user) {
  state.user = user
 },
 // 退出
 logout (state, user) {
  state.user = false
 }
 }
})

路由驗證:       

      路由驗證用  router.beforeEach( (to, from, next) => {  } 
      這里的to代表要去的路由指向,from是指從哪個路由跳轉(zhuǎn)過來的,next是判斷操作,如果為空,表示放行。
      比如:下一跳的路由為‘/watchHouse'或者‘/AgentMsg' ,如果沒有登錄的話,通過代碼 next ({path: '/login'})

跳轉(zhuǎn)到登錄的界面。代碼如下:

if (!store.state.user && (to.path === '/watchHouse' || to.path === '/AgentMsg')) {
 next({ path: '/login' })
}

比如:在路由‘/my'下,要跳往 ‘/ToolCompute',如果沒有登錄的話,跳轉(zhuǎn)到登錄頁面。代碼如下:    

if (!store.state.user && (from.path === '/my') && (to.path === '/ToolCompute')) {
 next({ path: '/login' })
}

全部代碼:

router.beforeEach((to, from, next) => {
 if (to.path === '/login') {
 next()
 } else {
 if (!store.state.user && (to.path === '/watchHouse' || to.path === '/AgentMsg')) {
  next({ path: '/login' })
 } else {
  next()
 }
 if (!store.state.user && (from.path === '/my') && (to.path === '/ToolCompute')) {
  next({ path: '/login' })
 }
 }
})

需要注意的是,路由驗證這個方法函數(shù)與vue實例的順序還有關(guān)系。如果寫在vue()的后面,下面就會執(zhí)行,后判斷。

如下圖所示:

這樣寫,當然是可以執(zhí)行的路由跳轉(zhuǎn)判斷的,但是當我們直接在瀏覽器的地址欄里直接輸入我們要跳轉(zhuǎn)的

完整路由信息的時候,這個路由跳轉(zhuǎn)就不會被判斷了。如下圖所示:


如果把路由驗證寫到VUE實例的前面,就不會出現(xiàn)這樣的問題了,這樣就會先進行路由判斷,再進行執(zhí)行實例里邊的內(nèi)容了。

代碼順序如下所示:

響應(yīng)攔截:比如在根實例中通過checkLogin()這個方法去判斷,登錄信息 的狀態(tài),加入登錄超時,則進行響應(yīng)攔截,代碼如下。

var app=new Vue({
 el: '#app',
 router,
 store,
 created(){
 checkLogin().then(function (res) {
  if(res.data&&res.data.code==1){
  store.commit('login',true);
  }
  else{
  router.push('/watchHouse-css');
  }
 })
 },
 template: '<App/>',
 components: { App }
})


//響應(yīng)攔截器
axios.interceptors.response.use(function(res){
 //如果是未登錄
 if(res.data&&res.data.code==2){
 app.$alert('登錄用戶已超時,請重新登錄', '提示', {
  confirmButtonText: '確定',
  type:'warning',
  closeOnClickModal:false,
  callback: action => {
  router.push('/watchHouse-css')
  }
 });
 }
 return res;
},function(err){
 return Promise.reject(err);
}) 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3實現(xiàn)下拉選擇框多選功能的方法詳解

    Vue3實現(xiàn)下拉選擇框多選功能的方法詳解

    在vue的實際開發(fā)過程中,我們?nèi)绾螌⒁赃x中的值直接渲染到頁面中,下面這篇文章主要給大家介紹了關(guān)于Vue3實現(xiàn)下拉選擇框多選功能的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • Iframe在Vue中的狀態(tài)保持技術(shù)

    Iframe在Vue中的狀態(tài)保持技術(shù)

    這篇文章主要為大家介紹了Iframe在Vue中的狀態(tài)保持技術(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 一款移動優(yōu)先的Solid.js路由solid router stack使用詳解

    一款移動優(yōu)先的Solid.js路由solid router stack使用詳解

    這篇文章主要為大家介紹了一款移動優(yōu)先的Solid.js路由solid router stack使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • vue3鼠標經(jīng)過顯示按鈕功能的實現(xiàn)

    vue3鼠標經(jīng)過顯示按鈕功能的實現(xiàn)

    本篇文章介紹了如何使用 Vue3 實現(xiàn)一個鼠標經(jīng)過顯示按鈕的效果,我們使用了 Vue3 的 Composition API 來創(chuàng)建響應(yīng)式的數(shù)據(jù),并使用了?@mouseover?和?@mouseleave?事件來監(jiān)聽鼠標的移入和移出事件,感興趣的朋友一起看看吧
    2024-04-04
  • vue實現(xiàn)跨頁面定位錨點區(qū)域方式

    vue實現(xiàn)跨頁面定位錨點區(qū)域方式

    這篇文章主要介紹了vue實現(xiàn)跨頁面定位錨點區(qū)域方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 在項目vue中使用echarts的操作步驟

    在項目vue中使用echarts的操作步驟

    這篇文章主要介紹了在項目vue中使用echarts的操作步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue3封裝登錄功能的兩種實現(xiàn)

    Vue3封裝登錄功能的兩種實現(xiàn)

    本文主要介紹了Vue3封裝登錄功能的兩種實現(xiàn),文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue中路由的使用方法實例詳解

    Vue中路由的使用方法實例詳解

    本文為大家介紹Vue中路由的使用方法,包括安裝路由創(chuàng)建路由并導(dǎo)出以及在應(yīng)用實例中使用vue-router的相關(guān)知識,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-02-02
  • 探討Vue.js的組件和模板

    探討Vue.js的組件和模板

    指令是Vue.js中一個重要的特性, 主要提供了一種機制將數(shù)據(jù)的變化映射為DOM行為。下面通過本文給大家分享Vue.js的組件和模板,需要的朋友參考下吧
    2017-10-10
  • vue項目中常用解決跨域的方法總結(jié)(CORS和Proxy)

    vue項目中常用解決跨域的方法總結(jié)(CORS和Proxy)

    在vue項目中,一般我們會遇到跨域的問題,vue項目中解決跨域是非常簡單的,下面這篇文章主要給大家介紹了關(guān)于vue項目中常用解決跨域的方法,主要解釋CROS和Proxy兩種方式,需要的朋友可以參考下
    2022-12-12

最新評論