vue獲取token(設(shè)置token,清除token)實(shí)現(xiàn)登錄方式
vue獲取token(設(shè)置token,清除token)實(shí)現(xiàn)登錄
使用token做登錄驗(yàn)證
1、登錄的時(shí)候前端調(diào)用后端的接口,把用戶名和密碼傳給后端。
2、后端收到請(qǐng)求,驗(yàn)證用戶名和密碼,返回給前端一個(gè)token值。
3、前端收到后端傳給的token值,將token存儲(chǔ)在本地 有3種方法我們選用 sessionStorage
- cookie :可設(shè)置失效時(shí)間,否則默認(rèn)為關(guān)閉瀏覽器后消失
- localStorage :除非被手動(dòng)清除,否則永久保存
- sessionStorage:僅在當(dāng)前網(wǎng)頁(yè)會(huì)話下有效,關(guān)閉頁(yè)面或?yàn)g覽器后就會(huì)被清除
在utils中創(chuàng)建auth.js用來(lái)封裝方法
//設(shè)置token
export function setToken(token) {
// token 代表要存儲(chǔ)到本得的值
return sessionStorage.setItem("儲(chǔ)存到本地的名字", token)
}
//獲取token
export function getToken() {
return sessionStorage.getItem("儲(chǔ)存到本地的名字")
}
//清除token
export function removeToken() {
return sessionStorage.removeItem("要清除的名字")
}在min.js全局引入
import {
getToken,
setToken,
removeToken
} from '@/utils/auth'vue中token的處理
傳統(tǒng)的token處理
直接存儲(chǔ)到localstorage或者sessionStorage中,缺點(diǎn):
1 數(shù)據(jù)并非響應(yīng)式,需要進(jìn)行特殊處理
2 存取麻煩,在存儲(chǔ)對(duì)象數(shù)組類型的時(shí)候要用JSON轉(zhuǎn)換為JSON類型的字符串
VUEX的存儲(chǔ)方法
通過(guò)mutations定義的函數(shù)將數(shù)據(jù)存儲(chǔ)到Vuex的state中
缺點(diǎn): 數(shù)據(jù)存儲(chǔ)的有效時(shí)間短,刷新頁(yè)面數(shù)據(jù)消失
項(xiàng)目中的token處理方法
兩者結(jié)合,加上封裝本地存儲(chǔ)模塊
本地存儲(chǔ)模塊:
// 封裝本地存儲(chǔ)模塊
?
// 存儲(chǔ)數(shù)據(jù)
export const setItem = (key, val) => {
? // 對(duì)象或數(shù)組要進(jìn)行轉(zhuǎn)換
? if (typeof val === 'object') {
? ? val = JSON.stringify(val)
? }
? localStorage.setItem(key, val)
}
?
// 獲得數(shù)據(jù)
export const getItem = (key) => {
? const data = localStorage.getItem(key)
? // 處理localStorage內(nèi)的數(shù)據(jù)
? // 不需要async
? try {
? ? return JSON.parse(data)
? } catch {
? ? return data
? }
}
?
// 刪除數(shù)據(jù)
export const removeItem = (key) => {
? localStorage.removeItem(key)
}導(dǎo)出了存儲(chǔ)數(shù)據(jù),獲取數(shù)據(jù),和刪除數(shù)據(jù)的函數(shù),數(shù)據(jù)的轉(zhuǎn)換在這里進(jìn)行
Vuex
import Vue from 'vue'
import Vuex from 'vuex'
// 導(dǎo)入本地存儲(chǔ)的模塊
import { setItem, getItem } from '@/assets/utils/storeage'
?
Vue.use(Vuex)
?
const tokenKey = 'user'
?
export default new Vuex.Store({
? state: {
? ? // 一個(gè)對(duì)象用于存儲(chǔ)當(dāng)前登錄用戶信息里面包含token等數(shù)據(jù)
? ? user: getItem(tokenKey)
? },
? mutations: {
? ? saveToken(state, data) {
? ? ? state.user = data
? ? ? // 為了防止刷新丟失需要把數(shù)據(jù)備份到本地存儲(chǔ)
? ? ? setItem(tokenKey, state.user)
? ? }
? },
? actions: {},
? modules: {}
})實(shí)現(xiàn)了本地?cái)?shù)據(jù)存儲(chǔ)只是用來(lái)延長(zhǎng)token存在的時(shí)間其他的一切操作都是用vuex內(nèi)的state.user內(nèi)的數(shù)據(jù)來(lái)進(jìn)行
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Vue3+Vite使用雙token實(shí)現(xiàn)無(wú)感刷新
- 詳細(xì)聊聊前端如何實(shí)現(xiàn)token無(wú)感刷新(refresh_token)
- React如何使用refresh_token實(shí)現(xiàn)無(wú)感刷新頁(yè)面
- 如何實(shí)現(xiàn)無(wú)感刷新token
- Vue項(xiàng)目報(bào)錯(cuò):Uncaught?SyntaxError:?Unexpected?token?'<'的解決方法
- vue請(qǐng)求接口并且攜帶token的實(shí)現(xiàn)
- 前端使用vue實(shí)現(xiàn)token無(wú)感刷新的三種方案解析
相關(guān)文章
Vue+SSM實(shí)現(xiàn)圖片上傳預(yù)覽效果
這篇文章主要為大家詳細(xì)介紹了Vue+SSM實(shí)現(xiàn)圖片上傳預(yù)覽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
vue2響應(yīng)式原理之Object.defineProperty()方法的使用
這篇文章主要介紹了vue2響應(yīng)式原理之Object.defineProperty()方法的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
Vue3實(shí)現(xiàn)pdf在線預(yù)覽的三種方式
這篇文章主要為大家詳細(xì)介紹了使用Vue3實(shí)現(xiàn)pdf在線預(yù)覽的三種常用方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
Vue ElementUI this.$confirm async await封
這篇文章主要介紹了Vue ElementUI this.$confirm async await封裝方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue項(xiàng)目index.html中使用環(huán)境變量的代碼示例
在Vue3中使用環(huán)境變量的方式與Vue2基本相同,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目index.html中使用環(huán)境變量的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
Vue3中實(shí)現(xiàn)微信掃碼登錄的步驟和代碼示例
在 Vue 3 中實(shí)現(xiàn)微信掃碼登錄,涉及到前端生成二維碼、監(jiān)聽(tīng)微信回調(diào)以及與后端的交互,本文給大家介紹了一個(gè)詳細(xì)的實(shí)現(xiàn)步驟和代碼示例,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07

