重置Vue资源中的令牌-Vue2

问题描述 投票:1回答:1

在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资源仍会在每个请求中发送先前的令牌。我在这里想念的是什么?

vuejs2 vue-resource
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.