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

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

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

路由守衛(wèi)

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

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

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

全局守衛(wèi)

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

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

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

//在應(yīng)用程序初始化時檢查用戶是否已登錄
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
})

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

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

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

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

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

localStorage的用法

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

setItem方法用于向本地存儲添加鍵值對。第一個參數(shù)是鍵,第二個參數(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;
        }

    }
}

退出登錄時

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

總結(jié)

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

相關(guān)文章

  • vue中的router-view父子組件傳參方式

    vue中的router-view父子組件傳參方式

    這篇文章主要介紹了vue中的router-view父子組件傳參方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Vue前端項目自適應(yīng)布局的簡單方法

    Vue前端項目自適應(yīng)布局的簡單方法

    最近項目開發(fā)中遇到一個需求,需要實現(xiàn)寬度自動適應(yīng),所以下面這篇文章主要給大家介紹了關(guān)于Vue前端項目自適應(yīng)布局的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • vue實現(xiàn)前端列表多條件篩選

    vue實現(xiàn)前端列表多條件篩選

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)前端列表多條件篩選,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 關(guān)于vue-cli3打包代碼后白屏的解決方案

    關(guān)于vue-cli3打包代碼后白屏的解決方案

    這篇文章主要介紹了關(guān)于vue-cli3打包代碼后白屏的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue3組件庫框架搭建example環(huán)境的詳細(xì)教程

    Vue3組件庫框架搭建example環(huán)境的詳細(xì)教程

    這篇文章主要介紹了Vue3組件庫框架搭建example環(huán)境的詳細(xì)教程,本文便搭建?example?開發(fā)環(huán)境和打包構(gòu)建,并在example中使用組件庫,需要的朋友可以參考下
    2022-11-11
  • 詳解如何用模塊化的方式寫vuejs

    詳解如何用模塊化的方式寫vuejs

    這篇文章主要介紹了詳解如何用模塊化的方式寫vuejs,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 總結(jié)vue映射的方法與混入的使用過程

    總結(jié)vue映射的方法與混入的使用過程

    這篇文章主要介紹了總結(jié)vue映射的方法與混入的使用過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue與iframe之間的交互方式(一看就會)

    vue與iframe之間的交互方式(一看就會)

    這篇文章主要介紹了vue與iframe之間的交互方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳解Vue3常用的6種組件通信方式

    詳解Vue3常用的6種組件通信方式

    我們用Vue3開發(fā)項目時,常常需要面對的一個問題就是組件之間的通信,如何將數(shù)據(jù)發(fā)給對應(yīng)的組件,這是不可避免的一個問題,該篇講述了Vue3常用的6種組件通信方式,需要的朋友可以參考下
    2024-09-09
  • 詳解關(guān)于Vue版本不匹配問題(Vue packages version mismatch)

    詳解關(guān)于Vue版本不匹配問題(Vue packages version mismatch)

    這篇文章主要介紹了詳解關(guān)于Vue版本不匹配問題(Vue packages version mismatch),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論