亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue2.x配置路由導(dǎo)航守衛(wèi)實(shí)現(xiàn)用戶登錄和退出

 更新時(shí)間:2021年08月23日 10:00:23   作者:Dream_飛翔  
之前在Vue的學(xué)習(xí)中通過(guò)路由導(dǎo)航守衛(wèi)控制實(shí)現(xiàn)了用戶登錄模塊的功能,本文基于Vue2.x進(jìn)行實(shí)現(xiàn),在此將實(shí)現(xiàn)過(guò)程進(jìn)行記錄與總結(jié),感興趣的可以了解一下

前言

在這里插入圖片描述

之前在Vue的學(xué)習(xí)中通過(guò)路由導(dǎo)航守衛(wèi)控制實(shí)現(xiàn)了用戶登錄模塊的功能,現(xiàn)在再次做項(xiàng)目時(shí)又要通過(guò)Vue配置路由導(dǎo)航守衛(wèi)來(lái)實(shí)現(xiàn)相同的功能,在此將實(shí)現(xiàn)過(guò)程進(jìn)行記錄與總結(jié)(本文基于Vue2.x進(jìn)行實(shí)現(xiàn))

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、配置路由導(dǎo)航守衛(wèi)

1. 全局導(dǎo)航守衛(wèi)

如果項(xiàng)目中只有后臺(tái)的情況,在Vue中配置全局導(dǎo)航守衛(wèi)即可,設(shè)定全局路由導(dǎo)航守衛(wèi)后只要啟動(dòng)該項(xiàng)目,用戶沒(méi)有登錄的話只能跳轉(zhuǎn)到登錄頁(yè)面,不允許跳轉(zhuǎn)到其它界面。
在安裝vue-router依賴時(shí)自動(dòng)生成的router -> index.js文件夾下添加以下代碼

router.beforeEach((to, from, next) => {
  // 如果訪問(wèn)的是登錄界面則直接放行
  if (to.path === '/login') return next()
  //獲取用戶頁(yè)面token信息
  let token = window.sessionStorage.getItem('token')
  //如果token數(shù)據(jù)為null則跳轉(zhuǎn)到指定路徑
  if (!token) return next("/login")
  next()
})

在這里插入圖片描述

參數(shù)解釋:

  • to:要跳轉(zhuǎn)到哪個(gè)界面
  • from:要從哪個(gè)界面進(jìn)行跳轉(zhuǎn)
  • next:代表next()函數(shù),作用為放行

2. 局部導(dǎo)航守衛(wèi)

在項(xiàng)目開(kāi)發(fā)中還有一種情況為要同時(shí)開(kāi)發(fā)前臺(tái)和后臺(tái),而此時(shí)路由導(dǎo)航守衛(wèi)就不能進(jìn)行全局配置,因?yàn)榍芭_(tái)界面要展示給用戶,即使用戶在沒(méi)有登錄的情況下也能夠進(jìn)行訪問(wèn),因此路由導(dǎo)航守衛(wèi)要攔截的路由只有后臺(tái)的路徑。

仍然是在index.js文件夾下配置路由導(dǎo)航守衛(wèi),只不過(guò)這次配置是為單個(gè)組件進(jìn)行配置。

例如在我的這個(gè)項(xiàng)目中Welcome組件為后臺(tái)組件,現(xiàn)在要為該組件配置路由導(dǎo)航守衛(wèi),首先要將全局配置的beforeEach更換為beforeEnter用于進(jìn)行單組件導(dǎo)航守衛(wèi)的配置

在這里插入圖片描述

作者之前就是在登錄組件中配置的路由導(dǎo)航守衛(wèi),結(jié)果沒(méi)有作用,在這里記錄下來(lái),以后不犯這樣的錯(cuò)誤。在組件中添加以下代碼即可:

// 定義路由導(dǎo)航守衛(wèi)
    beforeEnter(to, from, next) {
      //獲取用戶頁(yè)面token信息
      let token = window.sessionStorage.getItem('token')
      //如果token數(shù)據(jù)為null 則跳轉(zhuǎn)到指定路徑
      if (!token) return next("/login")
      next()
    }

局部導(dǎo)航守衛(wèi)的參數(shù)作用與全局配置的參數(shù)作用一致,除了將beforeEach更換為beforeEnter以外其余全部一致,在此不多做贅述。

二、用戶登錄

在這里只進(jìn)行展示前臺(tái)代碼,后臺(tái)代碼寫法每個(gè)人有每個(gè)人的風(fēng)格和寫法,在此就不做展示。

1. axios配置

為了避免項(xiàng)目中出現(xiàn)回調(diào)地獄的問(wèn)題,在這里我導(dǎo)入了axios插件,在main.js文件中提前對(duì)axios進(jìn)行了配置

/* 導(dǎo)入axios包 */
import axios from 'axios'

/* 設(shè)定axios的請(qǐng)求根目錄 */
axios.defaults.baseURL = 'http://localhost:8089/'
/* 向vue對(duì)象中添加全局對(duì)象 以后發(fā)送ajax請(qǐng)求使用$http對(duì)象 */
Vue.prototype.$http = axios

因?yàn)樵趍ain.js文件中進(jìn)行了全局配置,因此在組件中出現(xiàn)$http代表設(shè)定的請(qǐng)求根目錄,在這里為http://localhost:8089/

2. 用戶登錄代碼

// 當(dāng)點(diǎn)擊登錄按鈕時(shí)向后臺(tái)發(fā)送數(shù)據(jù)
login() {
  this.$refs.loginFormRef.validate(async valid => {
    if(!valid) return
    const {data: result} = await this.$http.post("/user/login",this.loginForm)
    // 如果返回的參數(shù)中狀態(tài)碼不為200,則代表登錄失敗
    if(result.status !== 200) return this.$message.error("用戶登錄失敗")
    this.$message.success("用戶登錄成功")
    //登錄成功之后,將token信息保存到session中
    window.sessionStorage.setItem('token',result.data)
    //跳轉(zhuǎn)到后臺(tái)管理系統(tǒng)首頁(yè)
    this.$router.push("/welcome")
})

三、用戶退出

用戶退出時(shí)只需要將Session中的token數(shù)據(jù)刪除后再跳轉(zhuǎn)到其它頁(yè)面即可,此時(shí)路由導(dǎo)航守衛(wèi)再次生效,因此在前臺(tái)就可以實(shí)現(xiàn),不需要連接后端。

1. 實(shí)現(xiàn)代碼

logout() {
  //1.刪除session中的數(shù)據(jù)
  window.sessionStorage.clear()
  //2.用戶訪問(wèn)登錄頁(yè)面
  this.$router.push('/login')
}

總結(jié)

以上便是在Vue中配置路由導(dǎo)航守衛(wèi)后實(shí)現(xiàn)用戶登錄和退出的功能,在實(shí)現(xiàn)中分了兩種情況,分別為項(xiàng)目中只能登錄后才能訪問(wèn)界面和即使用戶不登錄也能夠?yàn)g覽前臺(tái)的兩種情況。對(duì)于第一種情況來(lái)說(shuō)只需要進(jìn)行全局配置即可,對(duì)于第二種情況則需要在登錄后要跳轉(zhuǎn)的組件中配置單組件路由導(dǎo)航即可。

到此這篇關(guān)于Vue2.x配置路由導(dǎo)航守衛(wèi)實(shí)現(xiàn)用戶登錄和退出的文章就介紹到這了,更多相關(guān)Vue 路由守衛(wèi)登錄退出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中關(guān)于this指向的問(wèn)題示例詳解

    Vue中關(guān)于this指向的問(wèn)題示例詳解

    在Vue中,方法體里用this調(diào)用vue實(shí)例的數(shù)據(jù),有時(shí)會(huì)指向window,導(dǎo)致調(diào)用失敗報(bào)錯(cuò),這篇文章主要介紹了Vue中關(guān)于this指向的問(wèn)題 ,需要的朋友可以參考下
    2022-07-07
  • 詳解如何寫出一個(gè)利于擴(kuò)展的vue路由配置

    詳解如何寫出一個(gè)利于擴(kuò)展的vue路由配置

    這篇文章主要介紹了詳解如何寫出一個(gè)利于擴(kuò)展的vue路由配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • vue?結(jié)合webpack的初級(jí)使用指南小白學(xué)習(xí)篇

    vue?結(jié)合webpack的初級(jí)使用指南小白學(xué)習(xí)篇

    這篇文章主要為大家介紹了vue?結(jié)合webpack的初級(jí)使用指南非常適合入門webpack的小白學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • vue 子組件和父組件傳值的示例

    vue 子組件和父組件傳值的示例

    這篇文章主要介紹了vue 子組件和父組件傳值的示例,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下
    2020-09-09
  • 關(guān)于Vue中使用alibaba的iconfont矢量圖標(biāo)的問(wèn)題

    關(guān)于Vue中使用alibaba的iconfont矢量圖標(biāo)的問(wèn)題

    這篇文章主要介紹了Vue使用alibaba的iconfont矢量圖標(biāo)的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Vue?數(shù)據(jù)綁定事件綁定樣式綁定語(yǔ)法示例

    Vue?數(shù)據(jù)綁定事件綁定樣式綁定語(yǔ)法示例

    這篇文章主要為大家介紹了Vue?數(shù)據(jù)綁定事件綁定樣式綁定語(yǔ)法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Vue3中emits與attrs的區(qū)別分析

    Vue3中emits與attrs的區(qū)別分析

    這篇文章主要給大家介紹了關(guān)于Vue3中emits與attrs區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10
  • vue項(xiàng)目中使用this.$confirm解析

    vue項(xiàng)目中使用this.$confirm解析

    這篇文章主要介紹了vue項(xiàng)目中使用this.$confirm方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 使用Element進(jìn)行前端開(kāi)發(fā)的詳細(xì)圖文教程

    使用Element進(jìn)行前端開(kāi)發(fā)的詳細(xì)圖文教程

    眾所周知Element是一套Vue.js后臺(tái)組件庫(kù),它能夠幫助你更輕松更快速地開(kāi)發(fā)后臺(tái)項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于使用Element進(jìn)行前端開(kāi)發(fā)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • vue3+ts實(shí)現(xiàn)樹形組件(菜單組件)

    vue3+ts實(shí)現(xiàn)樹形組件(菜單組件)

    本文主要介紹了vue3+ts實(shí)現(xiàn)樹形組件(菜單組件),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論