Vue3的路由守衛(wèi)以及登錄狀態(tài)儲存過程
路由守衛(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整合方案
這篇文章主要介紹了VUE之關(guān)于store狀態(tài)管理核心解析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Vue開發(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實(shí)現(xiàn)一個(gè)電子簽名組件的示例代碼
這篇文章主要介紹了使用vue實(shí)現(xiàn)一個(gè)電子簽名組件的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01vue-cli解決IE瀏覽器sockjs-client錯(cuò)誤方法
這篇文章主要為大家介紹了vue-cli解決IE瀏覽器sockjs-client錯(cuò)誤方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08vue中數(shù)據(jù)字典dicts的簡單說明和用法介紹
這篇文章主要給大家介紹了關(guān)于vue中數(shù)據(jù)字典dicts的簡單說明和用法的相關(guān)資料,如果您想在Vue中使用字典查詢,您可以使用Vue的計(jì)算屬性和方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01vue在mounted中window.onresize不生效問題及解決
這篇文章主要介紹了vue中在mounted中window.onresize不生效問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04使用Element實(shí)現(xiàn)表格表頭添加搜索圖標(biāo)和功能
這篇文章主要介紹了使用Element實(shí)現(xiàn)表格表頭添加搜索圖標(biāo)和功能,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07