在main.js文件中,我已将vue资源设置为对每个请求使用auth标头:
Vue.use( VueResource )
let auth = validToken()
if( auth ) {
Vue.http.interceptors.push( ( request, next ) => {
request.headers.set( 'Authorization', auth.token )
request.headers.set( 'Accept', 'application/json' )
next()
} )
}
在注销时,我试图以这种方式删除标题,
resetVueRsr: () => {
this.$http.headers.common['Authorization'] = null
}
当用户登录时,将新令牌重置为全局Vue资源,如下所示
this.$http.headers.common['Authorization'] = res.body.token
但是,一旦新用户登录该站点,vue资源仍然会在每次请求时发送前一个令牌。我在这里缺少什么?
答案 0 :(得分:0)
我检查了the source,似乎所有已定义的拦截器都已添加到某些internal array中,然后用于请求。
根据您的代码示例,您将以某种方式获得带有初始标记的对象,然后将其传递到箭头函数中,因此JS为此创建了一个闭包以使该对象在函数中可用,我认为此闭包的存在时间等于您应用的生命周期。我认为您有一种SPA。
从源头上看,拦截器似乎与通用标头也不相关,因此删除和重置的方式不会更改拦截器。