在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资源仍会在每个请求中发送先前的令牌。我在这里想念的是什么?
我检查了the source,看起来所有已定义的拦截器都已添加到某些internal array中,然后用于请求。
根据您的代码示例,您以某种方式获得了带有初始标记的对象,然后将其传递到箭头函数中,因此JS为此创建了一个闭包以使该对象在函数中可用,我认为这种闭锁的寿命是等于您应用的生命周期。我认为您有某种SPA。
同样从源头上看,拦截器与通用标头也不相关,因此您删除和重置的方式不会更改拦截器。