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

Vue3的路由守衛(wèi)以及登錄狀態(tài)儲存過程

 更新時(shí)間:2024年08月30日 17:33:48   作者:依戀、陽光  
這篇文章主要介紹了Vue3的路由守衛(wèi)以及登錄狀態(tài)儲存過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

路由守衛(wèi)

Vue 3使用Vue Router 4來進(jìn)行路由管理和導(dǎo)航控制。Vue Router提供了一些鉤子函數(shù)來實(shí)現(xiàn)路由守衛(wèi)。

路由守衛(wèi)是一些特殊的函數(shù),它們會在路由發(fā)生變化時(shí)被調(diào)用,可以用來進(jìn)行一些操作,例如權(quán)限驗(yàn)證、登錄狀態(tài)檢查、頁面跳轉(zhuǎn)等。

在Vue Router 4中,路由守衛(wèi)可以分為三種類型:全局守衛(wèi)、路由獨(dú)享守衛(wèi)和組件內(nèi)守衛(wèi)。

全局守衛(wèi)

全局守衛(wèi)會在所有路由跳轉(zhuǎn)時(shí)被調(diào)用,可以用來進(jìn)行一些全局性的操作,例如權(quán)限驗(yàn)證和路由跳轉(zhuǎn)統(tǒng)計(jì)。全局守衛(wèi)有三種類型:

  • beforeEach(to, from, next): 在路由跳轉(zhuǎn)前被調(diào)用,可以進(jìn)行一些預(yù)處理操作,例如權(quán)限驗(yàn)證、路由跳轉(zhuǎn)攔截等。如果要繼續(xù)路由跳轉(zhuǎn),需要調(diào)用next()函數(shù)。
  • afterEach(to, from): 在路由跳轉(zhuǎn)完成后被調(diào)用,可以進(jìn)行一些后處理操作,例如頁面跳轉(zhuǎn)統(tǒng)計(jì)、日志記錄等。
  • beforeResolve(to, from, next): 在路由解析完畢后被調(diào)用,用于異步路由加載時(shí)等待所有相關(guān)組件都解析完畢。如果要繼續(xù)路由跳轉(zhuǎn),需要調(diào)用next()函數(shù)。

以beforeEach為例(router.js)

import store from '../store/index.js'


// 路由守衛(wèi)
router.beforeEach((to, from, next) => {

  // console.log("store", store.state.uInfo)
  // 判斷是否登錄
  const uInfo = store.state.uInfo.userInfo;

  if (!uInfo.userName) {
    if (to.path === '/login') {
      next();
      return;
    }
    next('/login');
  }
  else {
    next();
  }
})

登錄狀態(tài)儲存

在Vue 3中,可以使用Vue的響應(yīng)式狀態(tài)管理功能和瀏覽器提供的localStorage或sessionStorage API來存儲登錄狀態(tài)。

//在用戶登錄后將信息存儲在localStorage中
localStorage.setItem('user', JSON.stringify(user))

//在用戶注銷時(shí)刪除存儲的信息
localStorage.removeItem('user')

//在應(yīng)用程序初始化時(shí)檢查用戶是否已登錄
const user = JSON.parse(localStorage.getItem('user'))
const isAuthenticated = user !== null

//將登錄狀態(tài)存儲在響應(yīng)式狀態(tài)中
import { reactive } from 'vue'

const state = reactive({
  isAuthenticated: false
})

//在登錄時(shí)更新狀態(tài)
state.isAuthenticated = true

//在注銷時(shí)更新狀態(tài)
state.isAuthenticated = false

在上面的示例中,我們使用localStorage將用戶信息存儲在本地瀏覽器中,并使用Vue的響應(yīng)式狀態(tài)管理功能來存儲登錄狀態(tài)。

  • 當(dāng)用戶登錄時(shí),我們將其信息存儲在localStorage中,并將響應(yīng)式狀態(tài)中的isAuthenticated屬性設(shè)置為true。
  • 當(dāng)用戶注銷時(shí),我們刪除存儲在localStorage中的信息,并將isAuthenticated屬性設(shè)置為false。

在應(yīng)用程序初始化時(shí),我們檢查localStorage中是否存在用戶信息,如果存在,則將isAuthenticated屬性設(shè)置為true。

localStorage的用法

在Vue3中,localStorage.setItem用于將數(shù)據(jù)存儲在瀏覽器的本地存儲中。

setItem方法用于向本地存儲添加鍵值對。第一個(gè)參數(shù)是鍵,第二個(gè)參數(shù)是值。

以下是如何使用它的示例:

localStorage.setItem('key', 'value');

您可以使用getItem方法檢索值:

localStorage.getItem('key');

localStorage.removeItem用于從本地存儲中刪除指定的鍵值對。

以下是如何使用它的示例:

localStorage.removeItem('key');

例子:

const login = () => {

                store.commit('setUserInfo', data.loginData);

                // 設(shè)置本地存儲數(shù)據(jù) localStorage.setItem('key', 'value');
                localStorage.setItem('loginData', JSON.stringify(data.loginData))

                router.push({
                    path: '/user',
                });
            }

store

export default {

    namespace: true,

    state: {
        // localStorage.getItem('key');
        userInfo: localStorage.getItem('loginData') && JSON.parse(localStorage.getItem('loginData')) || {},
    },

    mutations: {
        setUserInfo(state, uInfo) {
            state.userInfo = uInfo;
        }

    }
}

退出登錄時(shí)

  const loginOut = () => {
                localStorage.removeItem('loginData');
                store.state.uInfo.userInfo = {};
                router.push({
                    path: '/login',
                })
            }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot之springboot與netty整合方案

    springboot之springboot與netty整合方案

    這篇文章主要介紹了VUE之關(guān)于store狀態(tài)管理核心解析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue開發(fā)之watch監(jiān)聽數(shù)組、對象、變量操作分析

    Vue開發(fā)之watch監(jiān)聽數(shù)組、對象、變量操作分析

    這篇文章主要介紹了Vue開發(fā)之watch監(jiān)聽數(shù)組、對象、變量操作,結(jié)合實(shí)例形式分析了vue.js使用Watch針對數(shù)組、對象、變量監(jiān)聽相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • Vue修改項(xiàng)目啟動端口號方法

    Vue修改項(xiàng)目啟動端口號方法

    今天小編就為大家分享一篇Vue修改項(xiàng)目啟動端口號方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 使用vue實(shí)現(xiàn)一個(gè)電子簽名組件的示例代碼

    使用vue實(shí)現(xiàn)一個(gè)電子簽名組件的示例代碼

    這篇文章主要介紹了使用vue實(shí)現(xiàn)一個(gè)電子簽名組件的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Vue在css中圖片路徑問題解決的配置方法

    Vue在css中圖片路徑問題解決的配置方法

    這篇文章主要為大家介紹了Vue在css中圖片路徑問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vue-cli解決IE瀏覽器sockjs-client錯(cuò)誤方法

    vue-cli解決IE瀏覽器sockjs-client錯(cuò)誤方法

    這篇文章主要為大家介紹了vue-cli解決IE瀏覽器sockjs-client錯(cuò)誤方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vue中數(shù)據(jù)字典dicts的簡單說明和用法介紹

    vue中數(shù)據(jù)字典dicts的簡單說明和用法介紹

    這篇文章主要給大家介紹了關(guān)于vue中數(shù)據(jù)字典dicts的簡單說明和用法的相關(guān)資料,如果您想在Vue中使用字典查詢,您可以使用Vue的計(jì)算屬性和方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • vue在mounted中window.onresize不生效問題及解決

    vue在mounted中window.onresize不生效問題及解決

    這篇文章主要介紹了vue中在mounted中window.onresize不生效問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue不能檢測到Object/Array更新的情況的解決

    Vue不能檢測到Object/Array更新的情況的解決

    本篇文章主要介紹了Vue不能檢測到Object/Array更新的情況的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • 使用Element實(shí)現(xiàn)表格表頭添加搜索圖標(biāo)和功能

    使用Element實(shí)現(xiàn)表格表頭添加搜索圖標(biāo)和功能

    這篇文章主要介紹了使用Element實(shí)現(xiàn)表格表頭添加搜索圖標(biāo)和功能,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論