在vue资源中重置令牌 - Vue2

时间:2017-09-13 14:16:11

标签: vuejs2 vue-resource

在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资源仍然会在每次请求时发送前一个令牌。我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我检查了the source,似乎所有已定义的拦截器都已添加到某些internal array中,然后用于请求。

根据您的代码示例,您将以某种方式获得带有初始标记的对象,然后将其传递到箭头函数中,因此JS为此创建了一个闭包以使该对象在函数中可用,我认为此闭包的存在时间等于您应用的生命周期。我认为您有一种SPA。

从源头上看,拦截器似乎与通用标头也不相关,因此删除和重置的方式不会更改拦截器。