最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue2實(shí)現(xiàn)無感刷新token的方式詳解

 更新時(shí)間:2024年02月28日 09:40:40   作者:江城開朗的豌豆  
在Web應(yīng)用中,用戶需要通過認(rèn)證和授權(quán)才能訪問受保護(hù)的資源,為了實(shí)現(xiàn)認(rèn)證和授權(quán)功能,通常需要使用Token來標(biāo)識(shí)用戶身份并驗(yàn)證其權(quán)限,本文給大家介紹了vue2實(shí)現(xiàn)無感刷新token的方式,需要的朋友可以參考下

引言:

在 Web 應(yīng)用中,用戶需要通過認(rèn)證和授權(quán)才能訪問受保護(hù)的資源。為了實(shí)現(xiàn)認(rèn)證和授權(quán)功能,通常需要使用 Token 來標(biāo)識(shí)用戶身份并驗(yàn)證其權(quán)限。但是,Token 有時(shí)限制其有效期,以確保安全性。

當(dāng) Token 過期時(shí),應(yīng)用程序會(huì)返回一個(gè) 401(未授權(quán))錯(cuò)誤,提示用戶重新登錄或刷新頁面。這可能會(huì)影響用戶體驗(yàn)和流程,并可能導(dǎo)致應(yīng)用程序的性能問題。

因此,為了提高應(yīng)用程序的用戶體驗(yàn)和可靠性,通常會(huì)使用無感刷新 Token 的技術(shù)來自動(dòng)刷新過期的 Token。這樣,即使 Token 過期,用戶也可以繼續(xù)使用應(yīng)用程序而不會(huì)收到任何干擾。此外,無感刷新 Token 還可以提高應(yīng)用程序的安全性和穩(wěn)定性,因?yàn)樗梢杂行У胤乐?Token 被惡意利用或攻擊。

需要注意的是,在實(shí)現(xiàn)無感刷新 Token 的過程中,需要注意保護(hù)用戶數(shù)據(jù)的安全性,并遵守相關(guān)的安全標(biāo)準(zhǔn)和法律法規(guī)。同時(shí),還需要根據(jù)應(yīng)用程序的需求和后端接口的設(shè)計(jì)來調(diào)整具體的實(shí)現(xiàn)方式。

安裝依賴

現(xiàn)在我們開始寫入vue2前端代碼

首先,確保已經(jīng)安裝了 Axios 和相關(guān)的依賴。

npm install axios

創(chuàng)建 Axios 實(shí)例并做請(qǐng)求封裝

在 src/utils/request.js 文件中創(chuàng)建一個(gè) Axios 實(shí)例,并進(jìn)行相關(guān)配置。

import axios from "axios";
 
const service = axios.create({
  baseURL:
    process.env.NODE_ENV !== "production"
      ? process.env.VUE_APP_BASE_API
      : process.env.VUE_APP_BASE_API_RUL,  
  timeout: 10000, // 超時(shí)時(shí)間
});
 
// request 攔截器
// 可以自請(qǐng)求發(fā)送前對(duì)請(qǐng)求做一些處理
// 比如統(tǒng)一加token,對(duì)請(qǐng)求參數(shù)統(tǒng)一加密
service.interceptors.request.use(
  (config) => {
    const token = window.localStorage.getItem("token");
    token && (config.headers.Authorization = token);
    config.headers["Content-Type"] = "application/json;charset=utf-8";
    config.headers["Authorization"] = "Bearer " + token; // 設(shè)置請(qǐng)求頭  
    return config;
  },
  (error) => {
    return Promise.reject("網(wǎng)絡(luò)異常,請(qǐng)稍后再試" + error);
  }
);
 
// response 攔截器
// 可以在接口響應(yīng)后統(tǒng)一處理結(jié)果
service.interceptors.response.use(
  (response) => {
    if (response.data.code == 401) {
      let userInfo = {};
      userInfo.account =  process.env.VUE_APP_TOKEN.split(",")[0];
      userInfo.password =  process.env.VUE_APP_TOKEN.split(",")[1];
      // 這里需要調(diào)用登錄接口,重新獲取token
      return refreshToken(userInfo).then((newToken) => {
        // 更新本地存儲(chǔ)的 Token       
        localStorage.setItem("token", newToken);
        // 重新發(fā)送原請(qǐng)求
        return service(response.config);
      });
    }
 
    let res = response.data;
    // 兼容服務(wù)端返回的字符串?dāng)?shù)據(jù)
    if (typeof res === "string") {
      res = res ? JSON.parse(res) : res;
    }
    return res;
  },
  (error) => {
    return Promise.reject("網(wǎng)絡(luò)異常,請(qǐng)稍后再試" + error);
  }
);
function refreshToken(userInfo) {
  return new Promise((resolve, reject) => {
    // 調(diào)用登錄接口重新獲取 Token
    axios  
      .post(`${process.env.VUE_APP_BASE_API}/pc_admin/login`, {    
        ...userInfo,
      })
      .then((response) => {
        resolve(response.data.data.token);
      })
      .catch((error) => {
        reject(error);
      });
  });
}
 
export default service;

使用封裝的 Axios 實(shí)例

在需要發(fā)送請(qǐng)求的地方引入封裝的 Axios 實(shí)例,并使用它來發(fā)送請(qǐng)求。

//sever.js
import request from "./http";
// 測試接口
export function getListApi(params) {
    return request({
        url: "/pc_admin/article", 
        method: "get",
        params: params,
    });
}
 

寫在最后

通過上述代碼,在使用 Axios 發(fā)送請(qǐng)求時(shí),會(huì)自動(dòng)處理 Token 過期的情況,并進(jìn)行無感刷新 Token。這樣可以提高應(yīng)用程序的用戶體驗(yàn)和安全性。

以上就是vue2實(shí)現(xiàn)無感刷新token的方式詳解的詳細(xì)內(nèi)容,更多關(guān)于vue2無感刷新token的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • webpack中的optimization配置示例詳解

    webpack中的optimization配置示例詳解

    這篇文章主要介紹了webpack中的optimization配置詳解,主要就是根據(jù)不同的策略來分割打包出來的bundle,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Vue.js自定義事件的表單輸入組件方法

    Vue.js自定義事件的表單輸入組件方法

    下面小編就為大家分享一篇Vue.js自定義事件的表單輸入組件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue3+Element?Plus的項(xiàng)目搭建過程詳解

    Vue3+Element?Plus的項(xiàng)目搭建過程詳解

    這篇文章主要為大家介紹了Vue3+Element?Plus的項(xiàng)目搭建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vue-print-nb只打印一頁解決方法示例

    vue-print-nb只打印一頁解決方法示例

    這篇文章主要為大家介紹了vue-print-nb只打印一頁解決方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-11-11
  • Vue 中如何正確引入第三方模塊的方法步驟

    Vue 中如何正確引入第三方模塊的方法步驟

    這篇文章主要介紹了Vue 中如何正確引入第三方模塊的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue中forEach循環(huán)的使用講解

    vue中forEach循環(huán)的使用講解

    這篇文章主要介紹了vue中forEach循環(huán)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解Vue-Router的安裝與使用

    詳解Vue-Router的安裝與使用

    Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,讓構(gòu)建單頁面應(yīng)用變得易如反掌。本文介紹下Vue Router的安裝與使用
    2021-06-06
  • Vue如何實(shí)現(xiàn)pptx在線預(yù)覽

    Vue如何實(shí)現(xiàn)pptx在線預(yù)覽

    通過PPTXjs插件,實(shí)現(xiàn)PPTX文件在線預(yù)覽,需下載PPTXjs,將其引入HTML頁面,并編寫相應(yīng)的HTML和JS代碼,如果是移動(dòng)端還需調(diào)整div大小,這是一種便捷的前端PPTX轉(zhuǎn)HTML技術(shù),適合網(wǎng)頁展示使用
    2024-09-09
  • 在Vue中使用highCharts繪制3d餅圖的方法

    在Vue中使用highCharts繪制3d餅圖的方法

    本篇文章主要介紹了在Vue中使用highCharts繪制3d餅圖的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • 簡化vuex的狀態(tài)管理方案的方法

    簡化vuex的狀態(tài)管理方案的方法

    在 vuejs 相關(guān)項(xiàng)目開發(fā)過程中,我們常常會(huì)使用 vuex 作為狀態(tài)管理工具, 整個(gè)組件的狀態(tài)做為單向數(shù)據(jù)流的模式管理,這篇文章主要介紹了簡化vuex的狀態(tài)管理方案的方法,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評(píng)論

宜宾市| 东莞市| 伊春市| 五峰| 瓦房店市| 清新县| 吕梁市| 华亭县| 黄平县| 六枝特区| 星座| 武穴市| 阳原县| 丰顺县| 高阳县| 新田县| 平果县| 新郑市| 时尚| 葫芦岛市| 长泰县| 通城县| 简阳市| 同仁县| 平山县| 库尔勒市| 老河口市| 南阳市| 宁阳县| 保康县| 山丹县| 云浮市| 洪洞县| 瑞丽市| 庆安县| 南江县| 晋中市| 南漳县| 白银市| 蓬莱市| 麻阳|