vue拦截器刷新登陆页面_vue-resourse全局设置拦截器居然这样使用,一刷新请求的数据就没有啦...

在Vue项目中,为了实现每个页面的http请求都包含token验证,通常会在main.js中设置全局拦截器。然而,当页面刷新时,拦截器内的逻辑不再执行,导致token无法获取。解决方法是将拦截器的设置放在Vue实例之前,确保拦截器先于应用运行,从而在每次请求时正确处理token。
摘要由CSDN通过智能技术生成

因为需要进行登录判定,需要在任何一个页面任何一次http请求,增加对token的判断,如果token已过期或者不存在,需要跳转至登录页面。设置全局拦截器就可以一次性实现这个需要;在登录页请求的时候,将token放到sessionStorage;在main.js写上以下代码:

newVue({

el:'#app',

router,

render:h=>h(App)

})

Vue.http.interceptors.push((request,next)=>{

// 登录成功后将后台返回的TOKEN在本地存下来,每次请求从sessionStorage中拿到存 储的TOKEN值

let TOKEN=sessionStorage.getItem('token');

if(TOKEN){

// 如果请求时TOKEN存在,就为每次请求的headers中设置好TOKEN,后台根据headers中的TOKEN判断是否放行

request.headers.set('token',TOKEN);

}

next((response)=>{

if(response.body.code===10010){//与后台约定登录失效的返回码

let data=response.body.data

window.location.href=data

}

return response;

})

})

但是,这样设置拦截器的话,一刷新界面,就会出现问题了,请求的数据出不来,拦截器函数根本就进不去,token拿不到,咦,这怎么办,嘿嘿,把拦截器函数放到实例上面就可以了,先让拦截器执行哟:

Vue.http.interceptors.push((request,next)=>{

// 登录成功后将后台返回的TOKEN在本地存下来,每次请求从 sessionStorage中拿到存储的TOKEN值

let TOKEN=sessionStorage.getItem('token');

if(TOKEN){

// 如果请求时TOKEN存在,就为每次请求的headers中设置好TOKEN,后台根据headers中的TOKEN判断是否放行

request.headers.set('token',TOKEN);

}

next((response)=>{

if(response.body.code===10010){//与后台约定登录失效的返回码

var data=response.body.data

window.location.href=data

}

return response;

})

})

newVue({

el:'#app',

router,

render:h=>h(App)

})```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值