VUE Token的失效處理詳解
目標(biāo)
處理token失效的場景
token作為用戶的關(guān)鍵令牌信息不是長久有效的,一般都會有一個失效時間(由后端來決定什么時長后失效),如果超過失效時間,當(dāng)前token就不能再作為用戶標(biāo)識請求數(shù)據(jù)了,這時候我們需要做一些額外的失效處理
思路分析
后端:收到用戶訪問某個接口時,檢查當(dāng)前token是否失效,如果token已經(jīng)失效,返給前端一個約定好的狀態(tài)碼 10002
前端:在響應(yīng)攔截器中,分析接口的返回值,如果狀態(tài)碼為10002, 則進(jìn)行token失效操作
代碼落地
在**src/utils/request.js**
中,處理響應(yīng)攔截器的error時,補(bǔ)充自定義的邏輯
由于頁面跳轉(zhuǎn)要用到路由,這里先引入
// 引入路由 import router from '@/router'
代碼
// 響應(yīng)攔截器中 // 1. 根據(jù)后端返回數(shù)據(jù)判斷本次操作是否成功,不成功主動報錯 // 2. 如果成功,只返回有效數(shù)據(jù) service.interceptors.response.use( response => { // 后端和前端的約定:success=true表示請求成功 if (response.data.success) { return response.data } else { // 如果success為false 業(yè)務(wù)出錯,直接觸發(fā)reject // 被catch分支捕獲 return Promise.reject(new Error(response.data.message)) } }, async error => { console.log('請求出錯啦', error) if (error.response.data.code === 10002) { console.log('token失效') await store.dispatch('user/logout') // .vue -- this.$route.fullPath // .js -- router.currentRoute.fullPath router.push('/login?return_url=' + encodeURIComponent(router.currentRoute.fullPath)) } console.dir(error) return Promise.reject(error) } )
以上方案為后端主導(dǎo)的方案,前端只需要拿到錯誤碼做業(yè)務(wù)處理即可,此方案也是常用且安全的最優(yōu)方案
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
uniapp+vue3路由跳轉(zhuǎn)傳參的實現(xiàn)
本文主要介紹了uniapp+vue3路由跳轉(zhuǎn)傳參的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11vue-element-admin按鈕級權(quán)限管控的實現(xiàn)
開發(fā)離不開權(quán)限,不同的用戶登錄,根據(jù)不同的權(quán)限,可以訪問不同的管理目錄,本文主要介紹了vue-element-admin按鈕級權(quán)限管控的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2022-04-04