生活随笔
收集整理的這篇文章主要介紹了
模块化封装 --- 双ToKen 实现免登录步骤详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文大概配置了下 雙token免登錄
關于下文提到的store中封裝的保存token的方法,請參考本鏈接:
import axios
from 'axios'
import jsonBig
from 'json-bigint'
import store
from '@/store'
import router
from '@/router'
const request
= axios
.create({baseURL
: 'xxxxxx/', transformResponse
: [ function(data
) { try {return jsonBig
.parse(data
) } catch (err) {return {}}}]
})
request
.interceptors
.request
.use(function(config
) {const user
= store
.state
.user
if (user
) {config
.headers
.Authorization
= `Bearer ${user.token}`}return config
},function(error
) {return Promise
.reject(error
)}
)
request
.interceptors
.response
.use(function(response
) {return response
},async function(error
) {console
.dir(error
)if (error
.response
&& error
.response
.status
=== 401) {const user
= store
.state
.user
if (!user
|| !user
.refresh_token
) {router
.push('/login') return}try {const res
= await axios({method
: 'PUT',url
: 'xxxxxxxxxxxx', headers
: {Authorization
: `Bearer ${user.refresh_token}` }})console
.log('刷新 token 成功', res
)store
.commit('xxx', { token
: res
.data
.data
.token
, refresh_token
: user
.refresh_token
})return request(error
.config
)} catch (err) {console
.log('請求刷線 token 失敗', err
)router
.push('/login')}}return Promise
.reject(error
)}
)
export default request
總結
以上是生活随笔為你收集整理的模块化封装 --- 双ToKen 实现免登录步骤详解的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。