vue獲取token(設置token,清除token)實現登錄方式
vue獲取token(設置token,清除token)實現登錄
使用token做登錄驗證
1、登錄的時候前端調用后端的接口,把用戶名和密碼傳給后端。
2、后端收到請求,驗證用戶名和密碼,返回給前端一個token值。
3、前端收到后端傳給的token值,將token存儲在本地 有3種方法我們選用 sessionStorage
- cookie :可設置失效時間,否則默認為關閉瀏覽器后消失
- localStorage :除非被手動清除,否則永久保存
- sessionStorage:僅在當前網頁會話下有效,關閉頁面或瀏覽器后就會被清除
在utils中創(chuàng)建auth.js用來封裝方法
//設置token export function setToken(token) { // token 代表要存儲到本得的值 return sessionStorage.setItem("儲存到本地的名字", token) } //獲取token export function getToken() { return sessionStorage.getItem("儲存到本地的名字") } //清除token export function removeToken() { return sessionStorage.removeItem("要清除的名字") }
在min.js全局引入
import { getToken, setToken, removeToken } from '@/utils/auth'
vue中token的處理
傳統(tǒng)的token處理
直接存儲到localstorage或者sessionStorage中,缺點:
1 數據并非響應式,需要進行特殊處理
2 存取麻煩,在存儲對象數組類型的時候要用JSON轉換為JSON類型的字符串
VUEX的存儲方法
通過mutations定義的函數將數據存儲到Vuex的state中
缺點: 數據存儲的有效時間短,刷新頁面數據消失
項目中的token處理方法
兩者結合,加上封裝本地存儲模塊
本地存儲模塊:
// 封裝本地存儲模塊 ? // 存儲數據 export const setItem = (key, val) => { ? // 對象或數組要進行轉換 ? if (typeof val === 'object') { ? ? val = JSON.stringify(val) ? } ? localStorage.setItem(key, val) } ? // 獲得數據 export const getItem = (key) => { ? const data = localStorage.getItem(key) ? // 處理localStorage內的數據 ? // 不需要async ? try { ? ? return JSON.parse(data) ? } catch { ? ? return data ? } } ? // 刪除數據 export const removeItem = (key) => { ? localStorage.removeItem(key) }
導出了存儲數據,獲取數據,和刪除數據的函數,數據的轉換在這里進行
Vuex
import Vue from 'vue' import Vuex from 'vuex' // 導入本地存儲的模塊 import { setItem, getItem } from '@/assets/utils/storeage' ? Vue.use(Vuex) ? const tokenKey = 'user' ? export default new Vuex.Store({ ? state: { ? ? // 一個對象用于存儲當前登錄用戶信息里面包含token等數據 ? ? user: getItem(tokenKey) ? }, ? mutations: { ? ? saveToken(state, data) { ? ? ? state.user = data ? ? ? // 為了防止刷新丟失需要把數據備份到本地存儲 ? ? ? setItem(tokenKey, state.user) ? ? } ? }, ? actions: {}, ? modules: {} })
實現了本地數據存儲只是用來延長token存在的時間其他的一切操作都是用vuex內的state.user內的數據來進行
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
element-ui?table使用type='selection'復選框全禁用(全選禁用)詳解
element-ui中的table的多選很好用,但是如果其中某一項禁止選擇,該怎樣操作呢,下面這篇文章主要給大家介紹了關于element-ui?table使用type='selection'復選框全禁用(全選禁用)的相關資料,需要的朋友可以參考下2023-01-01vue watch普通監(jiān)聽和深度監(jiān)聽實例詳解(數組和對象)
這篇文章主要介紹了vue watch普通監(jiān)聽和深度監(jiān)聽(數組和對象),文中單獨通過代碼給大家介紹了vue watch 深度監(jiān)聽的方法,感興趣的朋友一起看看吧2018-08-08