關於Token過期的問題

2021-10-14 01:41:42 字數 2015 閱讀 3324

access_token

作用:獲取需要授權的介面資料

expires_in

作用:access_token 過期的時間

refresh_token

作用:重新整理獲取新的 access_token

為什麼access_token需要有過期時間以及比較短

為了安全

怎麼處理?

方法一:

在請求發起攔截每個請求,判斷token的有效時間是否已經過期,若已過期,則講請求掛起,先重新整理token後再繼續請求

方法二:

不在請求前攔截,而是攔截返回後的資料。先發起請求,介面返回過期後,先重新整理token,再進行一次重試

綜上所述,方法一和方法二優缺點是互補的,方法一有校驗失敗的風險(本地時間被篡改時),方法二更簡單粗暴,等知道伺服器已經過期了再重試一次,只是消耗多乙個請求

**案例

import axios from 'axios'

import store from '@/store'

import from 'element-ui'

import router from '@/router'

import qs from 'qs'

const request = axios.create()

function redirectlogin ()

})}function refreshtoken () )

})}// 請求***

// add a request interceptor

request.interceptors.request.use(function (config) = store.state

if (user && user.access_token)

// 注意:這裡一定要返回 config,發歐洲請求就發布出去

return config;

}, function (error) );

// 響應***

let isrfreshing = false // 控制重新整理 token 狀態

let requests: any = // 儲存重新整理 token 期間過來的401請求

request.interceptors.response.use(function (response) , async function (error) = error.response

if (status === 400) else if (status === 401)

// 重新整理token

if (!isrfreshing)

// 重新整理token 成功了

store.commit('setuser', res.data.content)

// 把requests 佇列中的請求重新傳送出去

return request(error.config)

requests.foreach(cb => cb());

// 重置 request陣列

requests =

}).catch(err => ).finally(() => )

}// 重新整理狀態下,把請求掛起放到 requests 陣列中

return new promise(resolve => )

})} else if (status === 403) else if (status === 404) else if (status >= 500)

} else if (error.request) else `)

} console.log(error.config);

return promise.reject(error);

})export default request

C 關於過期Token的解決方案

使用static來定義變數和過期時間 初始化靜態資料 region private static datetime tokenexptime datetime.now.adddays 5 access token過期時間 private static string access token endr...

請求時token過期自動重新整理token

1.在開發過程中,我們都會接觸到token,token的作用是什麼呢?主要的作用就是為了安全,使用者登陸時,伺服器會隨機生成乙個有時效性的token,使用者的每一次請求都需要攜帶上token,證明其請求的合法性,伺服器會驗證token,只有通過驗證才會返回請求結果。3.下面進入主題,我們請求用的是a...

請求時token過期自動重新整理token

1.在開發過程中,我們都會接觸到token,token的作用是什麼呢?主要的作用就是為了安全,使用者登陸時,伺服器會隨機生成乙個有時效性的token,使用者的每一次請求都需要攜帶上token,證明其請求的合法性,伺服器會驗證token,只有通過驗證才會返回請求結果。3.下面進入主題,我們請求用的是a...