亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

web項(xiàng)目開(kāi)發(fā)中2個(gè)Token原因解析及示例代碼

 更新時(shí)間:2021年09月24日 15:52:50   作者:SpringSir  
這篇文章主要介紹了web項(xiàng)目開(kāi)發(fā)中會(huì)出現(xiàn)2個(gè)Token原因的解析以及實(shí)現(xiàn)的示例代碼,有需要的同學(xué)可以借鑒參考下,希望可以有所幫助

在這里插入圖片描述

問(wèn)題:

項(xiàng)目中2個(gè)Token, 一個(gè)時(shí)效2個(gè)小時(shí)(簡(jiǎn)稱(chēng):短Token), 另一個(gè)時(shí)效14天(簡(jiǎn)稱(chēng):長(zhǎng)Token),
為什么要用2個(gè)Token?

解答:

1.基于安全性, 防止Token泄露的考慮, 服務(wù)器資源中所有的請(qǐng)求都只能使用短Token, 并且短Token只有2小時(shí)時(shí)效;

  •  這個(gè)方法依然無(wú)法完全解決防止Token泄露的問(wèn)題, 只是在一定程度上提高防止Token泄露的安全性;
  • 長(zhǎng)Token的作用只有一個(gè), 就是短Token時(shí)效了的時(shí)候, 用長(zhǎng)Token去請(qǐng)求獲取新的短Token,

只有這個(gè)接口中, 才能用長(zhǎng)Token發(fā)請(qǐng)求.

2.為了提高用戶的體驗(yàn), 不至于直接讓用戶退出正在操作的頁(yè)面

import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
import { getToken, setToken } from './token'
import router from '../router/index.js'
import { Toast } from 'vant'
Vue.use(VueAxios, axios)
const instance = axios.create({
  baseURL: '基地址',
  timeout: 100000
})
// 添加請(qǐng)求攔截器
instance.interceptors.request.use(
  function (config) {
    // 統(tǒng)一添加token
    getToken() && (config.headers['Authorization']= `Bearer ${getToken().token}`)
    return config
  },
  function (error) {
    return Promise.reject(error)
  }
)
// 添加響應(yīng)攔截器
/**
 * 1.if 401 else 不管
 * 2.if 有token else 跳轉(zhuǎn)登錄頁(yè)
 * 3.try-catch 用 refresh_token 去獲取 token, if 成功 else refresh_token失效了,跳轉(zhuǎn)登錄頁(yè)
 * 4.保存獲取的 token, 更新, 繼續(xù)執(zhí)行用戶要的操作
 */
instance.interceptors.response.use(
  function (response) {
    return response
  },
  async function (error) {
    if (401 === error.response.status) {
      setTimeout('console.clear()', 2000)
      if (getToken()) {
        try {
          // 登錄了, 但是短T過(guò)期, 用長(zhǎng)T獲取短T(刷新用戶token)
          let res = await axios({
            url: '基地址/v1_0/authorizations',
            method: 'PUT',
            headers:{Authorization : `Bearer ${getToken().refresh_token}`}
          })
          // 更新短T
          let token = getToken()
          token.token = res.data.data.token
          setToken(token)
          // 繼續(xù)用戶操作
          return instance(error.config)
        } catch (error) {
          // 長(zhǎng)T失效,跳轉(zhuǎn)登錄頁(yè)
          Toast.fail('請(qǐng)先登錄')
          router.push({ path: '/login' })
        }
      } else {
        // 未登錄,跳轉(zhuǎn)登錄頁(yè)
        Toast.fail('請(qǐng)先登錄')
        router.push({ path: '/login' })
      }
    }
    return Promise.reject(error)
  }
)
export default instance

以上就是web項(xiàng)目開(kāi)發(fā)中2個(gè)Token原因解析及示例代碼的詳細(xì)內(nèi)容,更多關(guān)于web項(xiàng)目開(kāi)發(fā)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue 組件 全局注冊(cè)和局部注冊(cè)的實(shí)現(xiàn)

    vue 組件 全局注冊(cè)和局部注冊(cè)的實(shí)現(xiàn)

    下面小編就為大家分享一篇vue 組件 全局注冊(cè)和局部注冊(cè)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Vue路由切換時(shí)的左滑和右滑效果示例

    Vue路由切換時(shí)的左滑和右滑效果示例

    這篇文章主要介紹了Vue路由切換時(shí)的左滑和右滑效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 淺談Vuex的狀態(tài)管理(全家桶)

    淺談Vuex的狀態(tài)管理(全家桶)

    本篇文章主要介紹了淺談Vuex狀態(tài)管理(全家桶),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • vue 源碼解析之虛擬Dom-render

    vue 源碼解析之虛擬Dom-render

    這篇文章主要介紹了vue 源碼解析 --虛擬Dom-render的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Vue2.0基于vue-cli+webpack Vuex的用法(實(shí)例講解)

    Vue2.0基于vue-cli+webpack Vuex的用法(實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇Vue2.0基于vue-cli+webpack Vuex的用法(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Vue-cli3簡(jiǎn)單使用(圖文步驟)

    Vue-cli3簡(jiǎn)單使用(圖文步驟)

    這篇文章主要介紹了Vue-cli3簡(jiǎn)單使用(圖文步驟),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • Vue-cli3中使用TS語(yǔ)法示例代碼

    Vue-cli3中使用TS語(yǔ)法示例代碼

    typescript不僅可以約束我們的編碼習(xí)慣,還能起到注釋的作用,當(dāng)我們看到一函數(shù)后我們立馬就能知道這個(gè)函數(shù)的用法,需要傳什么值,返回值是什么類(lèi)型一目了然,這篇文章主要介紹了Vue-cli3中使用TS語(yǔ)法示例代碼,需要的朋友可以參考下
    2023-02-02
  • Vue中對(duì)watch的理解(關(guān)鍵是immediate和deep屬性)

    Vue中對(duì)watch的理解(關(guān)鍵是immediate和deep屬性)

    watch偵聽(tīng)器,是Vue實(shí)例的一個(gè)屬性,是用來(lái)響應(yīng)數(shù)據(jù)的變化,需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開(kāi)銷(xiāo)較大的操作時(shí),這個(gè)方式是最有用的,這篇文章主要介紹了Vue中對(duì)watch的理解,需要的朋友可以參考下
    2022-11-11
  • 使用canvas實(shí)現(xiàn)一個(gè)vue彈幕組件功能

    使用canvas實(shí)現(xiàn)一個(gè)vue彈幕組件功能

    這篇文章主要介紹了使用canvas實(shí)現(xiàn)一個(gè)vue彈幕組件功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue2.0之多頁(yè)面的開(kāi)發(fā)的示例

    vue2.0之多頁(yè)面的開(kāi)發(fā)的示例

    本篇文章主要介紹了vue2.0之多頁(yè)面的開(kāi)發(fā)的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01

最新評(píng)論