我正在尝试从用户那里获取一些数据,并且需要在调用中传递承载令牌。
async asyncData () {
let response = await axios.get('dataURL', {}, { headers: {"Authorization" : `Bearer ${this.$auth.getToken('local')}`} })
},
但这是行不通的,它总是说$ auth是未定义的,而在模板中,我可以轻松地输出任何$ auth属性...
如何在异步中获取承载令牌?
答案 0 :(得分:0)
也许您可以在通话后尝试传递上下文(this)?
例如:
await axios.get('dataURL', {}, { headers: {"Authorization" : `Bearer ${this.$auth.getToken('local')}`} }),this;
答案 1 :(得分:0)
@Titus对“这”是问题是正确的。您在asyncData中没有“ this”可用,因为:
您无法通过此内部访问组件实例 asyncData,因为它是在启动组件之前被调用的。
您确实可以访问“上下文”,因此您可以使用该上下文调用auth模块:
async asyncData (context) {
let response = await axios.get('dataURL', {}, { headers: {"Authorization" : `Bearer ${context.app.$auth.getToken('local')}`} })
},
nuxtjs / Auth docs
但是您仍然没有使用asyncData,这是因为您没有返回任何可以与数据合并的内容,因此您可能想要尝试以下操作:
async asyncData (context) {
let { response } = await axios.get('dataURL', {}, { headers: {"Authorization" : `Bearer ${context.app.$auth.getToken('local')}`} })
return { token: response }
},
话虽如此,我真的不明白为什么要在组件中获取令牌。当然,最好通过商店中的nuxtServerInit全局获取它。