Vue全局攔截所有請求并在請求頭中添加token方式
Vue全局攔截所有請求并在請求頭中添加token
在實際的項目中,為了登錄的安全,token是必不可少的,所以就需要前后端配合,后端生成和驗證token(這方面我也寫過文章,講述后端對token的處理),前端在每一次請求中都要在請求頭上加上token。
第一步:先講一講前端要對token做什么
首先,當我們在登錄頁面輸入賬號密碼之后,點擊登錄,后端除了會驗證賬號密碼是否正確,還會生成token,然后將token與登錄結果一起返回。
這時候前端就需要解析后端返回的數據,取到token,放到sessionStorage中。
下面就是我隨便寫的提交登錄表單的方法
//提交表單數據
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("權限不足:賬號密碼錯誤")
}
});
}簡單來說:
將token放入sessionStorage的操作的關鍵代碼就是這一行:
sessionStorage.setItem("token",response.data.data.token);第二步:查看sessionStorage中是否保存了token

成功將token保存到sessionStorage后,就可以開始攔截每次請求,將token放到請求頭中了
第三步:找到vue項目中的main.js文件,并引入axios

第四步:在main.js中寫相關的攔截請求的代碼
// 添加請求攔截器
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)
})上面是請求攔截器,其實還可以對響應進行攔截(可有可無,可以不寫,不影響請求攔截器的實現)
// 添加響應攔截器
axios.interceptors.response.use(function (response) {
// 對響應數據做點什么
return response
}, function (error) {
// 對響應錯誤做點什么
if (error.response) {
switch (error.response.status) {
case 401:
store.commit('del_token')
router.push('/login')
}
}
return Promise.reject(error)
})總結
好了,以上就是"Vue:全局攔截所有請求,并在請求頭中添加token"的全部內容了
這些僅為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue自定義指令結合阿里云OSS優(yōu)化圖片的實現方法
這篇文章主要介紹了Vue自定義指令結合阿里云OSS優(yōu)化圖片的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11

