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

vue中對token有效期的深入理解

 更新時(shí)間:2023年07月31日 09:18:42   作者:梔椩  
本文主要介紹了vue中對token有效期的深入理解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

保持登錄是每個(gè)web頁面必須要做的,不能一直不停的讓用戶進(jìn)行登錄,也不能讓用戶不登錄就直接進(jìn)入頁面。token在保持登錄中起到了非常重要的作用,我之前寫過一篇博客,vue存儲和使用后端傳遞過來的token,這篇博客詳細(xì)的說明了后端如何向前端傳遞token,前端如何將token保存在localstorage中,并通過請求攔截的方式判斷token是否過期。我不確定這么寫是否真的能起到作用,因?yàn)槲液竺鎸懘a的時(shí)候,我發(fā)現(xiàn)我后端明明設(shè)定的token的有效期是10個(gè)小時(shí),而本地localstorage中還一直有這個(gè)token并沒有清除。于是想了個(gè)辦法,在路由守衛(wèi)這個(gè)環(huán)節(jié)設(shè)置token的有效期,并進(jìn)行驗(yàn)證。記錄一下。

前端新設(shè)置一個(gè)token的有效期

代碼寫在路由處理文件中(router/index.js)

// 路由守衛(wèi)
import jwt_decode from 'jwt-decode'
router.beforeEach((to, from, next) => {
? const EXPIRESTIME = 86400 ?
? const isLogin = localStorage.mytoken ? true : false;
? if (isLogin){
? ? const decode = jwt_decode(localStorage.mytoken)
? ? const date = parseInt(new Date().getTime() / 1000)
? ? if ((date - decode.iat) > EXPIRESTIME){
? ? ? localStorage.removeItem('mytoken')
? ? ? next("/login");
? ? }
? }
? if (to.path == "/login" || to.path == "/register") {
? ? next();
? } else {
? ? isLogin ? next() : next("/login");
? }
});

上面的代碼可以看出,我設(shè)定了一個(gè)有效期EXPIRESTIME = 86400,也就是246060一天的時(shí)間

如果本地存儲了token的話,我就對這個(gè)token進(jìn)行解碼,獲得這個(gè)token的創(chuàng)建時(shí)間iat,并與當(dāng)前時(shí)間new Date().getTime()進(jìn)行比較,注意這里有個(gè)坑,當(dāng)前時(shí)間是int型數(shù)據(jù),單位是毫秒,而iat雖然也是int型數(shù)據(jù),但單位是秒,所以我把當(dāng)前時(shí)間除以1000再比較

如果超過了這個(gè)有效期,就清除這個(gè)token,然后重定向至登錄頁面

后面的路由守衛(wèi)比較簡單,就是正常的放行規(guī)則了

仍然使用后端token的有效期

我想來想去,還是覺得上面的思路有點(diǎn)不正常

既然后端已經(jīng)設(shè)置了有效期,為啥前端還要這么操作呢,可能自己對全棧的理解還是不到位,我又重新看了一下自己大半個(gè)月前寫的那篇博客,我覺得這個(gè)做法應(yīng)該是科學(xué)可行的,還是把代碼上上來

import axios from "axios";
import { Message, Loading } from 'element-ui';
import router from "./router"
let loading;
function startLoading(){
? ? loading = Loading.service({
? ? ? ? lock: true,
? ? ? ? text: '數(shù)據(jù)加載中',
? ? ? ? background: 'rgba(0,0,0,0.7)'
? ? })
}
function endLoading(){
? ? loading.close();
}
// 請求攔截
axios.interceptors.request.use(config => {
? ? startLoading();
? ? if(localStorage.eleToken){
? ? ? ? // 設(shè)置統(tǒng)一的請求頭
? ? ? ? config.headers.Authorization = localStorage.eleToken
? ? }
? ? return config
}, error => {
? ? return Promise.reject(error)
})
//響應(yīng)攔截
axios.interceptors.response.use(response => {
? ? endLoading();
? ? return response
}, error => {
? ? // 錯(cuò)誤提醒
? ? endLoading();
? ? Message.error(error.response.data)
? ? // 獲取錯(cuò)誤狀態(tài)碼
? ? const {status} = error.response
? ? if(status == 401){
? ? ? ? Message.error("token失效,請重新登錄")
? ? ? ? localStorage.removeItem('eleToken')
? ? ? ? router.push('/login')
? ? }
? ? return Promise.reject(error)
})
export default axios

這個(gè)代碼相當(dāng)于是對axios進(jìn)行了二次封裝,有很重要的兩點(diǎn):

  • 請求攔截時(shí),把token寫進(jìn)請求頭中
  • 頁面響應(yīng)時(shí),判斷token是否失效,失效的狀態(tài)碼為401,一旦監(jiān)測到出現(xiàn)了401的錯(cuò)誤碼,就說明token過期了,刪除、重定向

我懶得去驗(yàn)證這是不是正確的了,但是我覺得應(yīng)該沒啥問題

到此這篇關(guān)于vue中對token有效期的深入理解的文章就介紹到這了,更多相關(guān)vue token有效期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中處理全局快捷鍵的實(shí)用技巧小結(jié)

    Vue中處理全局快捷鍵的實(shí)用技巧小結(jié)

    隨著用戶體驗(yàn)要求的不斷提升,快捷鍵的處理也成為了提高用戶操作效率的一個(gè)重要方面,本文將深入探討如何在?Vue?3?中高效地處理快捷鍵,希望對大家有所幫助
    2024-11-11
  • 詳解Vue與element-ui整合方式

    詳解Vue與element-ui整合方式

    vue在前端技術(shù)中使用越來越多,也成為了主流框架,今天咱花點(diǎn)時(shí)間學(xué)習(xí)下Vue與element-ui整合方式,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-04-04
  • Vue 組件之間的通信方式詳解

    Vue 組件之間的通信方式詳解

    在 Vue.js 中,組件是構(gòu)建應(yīng)用程序的基本單位,然而,當(dāng)你的應(yīng)用程序變得復(fù)雜時(shí),組件之間的通信變得至關(guān)重要,本文將介紹幾種 Vue 組件之間通信的方式,幫助你更好地管理和組織代碼,感興趣的朋友一起看看吧
    2024-06-06
  • 前端vue打包項(xiàng)目,如何解決跨域問題

    前端vue打包項(xiàng)目,如何解決跨域問題

    這篇文章主要介紹了前端vue打包項(xiàng)目,如何解決跨域問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue3路由新玩法useRoute和useRouter詳解

    vue3路由新玩法useRoute和useRouter詳解

    這篇文章主要介紹了vue3路由新玩法useRoute和useRouter,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • ant design vue中日期選擇框混合時(shí)間選擇器的用法說明

    ant design vue中日期選擇框混合時(shí)間選擇器的用法說明

    這篇文章主要介紹了ant design vue中日期選擇框混合時(shí)間選擇器的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vuejs實(shí)現(xiàn)本地?cái)?shù)據(jù)的篩選分頁功能思路詳解

    vuejs實(shí)現(xiàn)本地?cái)?shù)據(jù)的篩選分頁功能思路詳解

    今天做項(xiàng)目需要一份根據(jù)本地?cái)?shù)據(jù)的篩選分頁功能,下面小編把vuejs實(shí)現(xiàn)本地?cái)?shù)據(jù)的篩選分頁功能的實(shí)現(xiàn)思路分享到腳本之家平臺,需要的朋友可以參考下
    2017-11-11
  • Vue中Table組件Select的勾選和取消勾選事件詳解

    Vue中Table組件Select的勾選和取消勾選事件詳解

    這篇文章主要為大家詳細(xì)介紹了Vue中Table組件Select的勾選和取消勾選事件詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • vuejs中使用mixin局部混入/全局混入的方法詳解

    vuejs中使用mixin局部混入/全局混入的方法詳解

    混入可以省很多代碼(高類聚低耦合),還方便維護(hù),下面這篇文章主要給大家介紹了關(guān)于vuejs中使用mixin局部混入/全局混入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Vue常用實(shí)例方法示例梳理分析

    Vue常用實(shí)例方法示例梳理分析

    在了解vue的常用的實(shí)例方法之前,我們應(yīng)該先要了解其常用的實(shí)例屬性,你能了解到的vue實(shí)例屬性有哪些呢?小編在這里就列舉了幾個(gè)常用的vue實(shí)例的屬性。大家可以一起參考學(xué)習(xí)一下
    2022-08-08

最新評論