Vue全局?jǐn)r截所有請求并在請求頭中添加token方式
Vue全局?jǐn)r截所有請求并在請求頭中添加token
在實際的項目中,為了登錄的安全,token是必不可少的,所以就需要前后端配合,后端生成和驗證token(這方面我也寫過文章,講述后端對token的處理),前端在每一次請求中都要在請求頭上加上token。
第一步:先講一講前端要對token做什么
首先,當(dāng)我們在登錄頁面輸入賬號密碼之后,點擊登錄,后端除了會驗證賬號密碼是否正確,還會生成token,然后將token與登錄結(jié)果一起返回。
這時候前端就需要解析后端返回的數(shù)據(jù),取到token,放到sessionStorage中。
下面就是我隨便寫的提交登錄表單的方法
//提交表單數(shù)據(jù) submitForm(formName) { const that = this axios({ method: "post", url: connectUrl+":10003/login/acount", data:{ userName:this.ruleForm.userName, password:this.ruleForm.password, option:0, loginTime:new Date() } }).then(function(response){ if(response.data.code === 200){ sessionStorage.setItem("token",response.data.data.token); sessionStorage.setItem("userName",response.data.data.userName); that.$router.push({ name:'index' }) that.$message.success("登錄成功") }else{ that.$message.error("權(quán)限不足:賬號密碼錯誤") } }); }
簡單來說:
將token放入sessionStorage的操作的關(guān)鍵代碼就是這一行:
sessionStorage.setItem("token",response.data.data.token);
第二步:查看sessionStorage中是否保存了token
成功將token保存到sessionStorage后,就可以開始攔截每次請求,將token放到請求頭中了
第三步:找到vue項目中的main.js文件,并引入axios
第四步:在main.js中寫相關(guān)的攔截請求的代碼
// 添加請求攔截器 axios.interceptors.request.use(function (config) { // 在發(fā)送請求之前做些什么 // 判斷是否存在token,如果存在將每個頁面header添加token if (sessionStorage.getItem("token")) { config.headers.common['Authorization'] = sessionStorage.getItem("token"); } return config }, function (error) { router.push('/login') return Promise.reject(error) })
上面是請求攔截器,其實還可以對響應(yīng)進(jìn)行攔截(可有可無,可以不寫,不影響請求攔截器的實現(xiàn))
// 添加響應(yīng)攔截器 axios.interceptors.response.use(function (response) { // 對響應(yīng)數(shù)據(jù)做點什么 return response }, function (error) { // 對響應(yīng)錯誤做點什么 if (error.response) { switch (error.response.status) { case 401: store.commit('del_token') router.push('/login') } } return Promise.reject(error) })
總結(jié)
好了,以上就是"Vue:全局?jǐn)r截所有請求,并在請求頭中添加token"的全部內(nèi)容了
這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用vuetify實現(xiàn)全局v-alert消息通知的方法
使用強大的Vuetify開發(fā)前端頁面,結(jié)果發(fā)現(xiàn)官方?jīng)]有提供簡便的全局消息通知組件,所以自己動手寫了一個簡單的組件,接下來通過本文給大家介紹使用vuetify實現(xiàn)全局v-alert消息通知的詳細(xì)代碼,感興趣的朋友跟隨小編一起看看吧2024-02-02Vue自定義指令結(jié)合阿里云OSS優(yōu)化圖片的實現(xiàn)方法
這篇文章主要介紹了Vue自定義指令結(jié)合阿里云OSS優(yōu)化圖片的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Vue?2源碼解析ParseHTML函數(shù)HTML模板
這篇文章主要為大家介紹了Vue?2源碼解析ParseHTML函數(shù)HTML模板詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08element-ui中的select下拉列表設(shè)置默認(rèn)值方法
今天小編就為大家分享一篇element-ui中的select下拉列表設(shè)置默認(rèn)值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08vite+element-plus項目基礎(chǔ)搭建的全過程
最近看完Vue3和Vite文檔之后,就寫了個小demo,整體感覺下來還是很絲滑的,下面這篇文章主要給大家介紹了關(guān)于vite+element-plus項目基礎(chǔ)搭建的全過程,需要的朋友可以參考下2022-07-07