Nuxt auth getToken witnin async не определено - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь получить некоторые данные от пользователя, и мне нужно передать токен на предъявителя в вызове.

async asyncData () {
    let response = await axios.get('dataURL', {}, { headers: {"Authorization" : `Bearer ${this.$auth.getToken('local')}`} })
  },

Но это не работает, всегда говорится, что $ auth не определено, а внутри шаблона я могу легко вывести любое свойство $ auth ...

Как я могу получить токен на предъявителя в асинхронном режиме?

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

@ Титус прав, что проблема заключается в «этом».У вас нет «this», доступного в asyncData, потому что:

У вас НЕТ доступа к экземпляру компонента через это внутри asyncData, потому что он вызывается до запуска компонента.

Однако у вас есть доступ к «контексту», поэтому вы можете вызывать модуль авторизации, используя это:

async asyncData (context) {
    let response = await axios.get('dataURL', {}, { headers: {"Authorization" : `Bearer ${context.app.$auth.getToken('local')}`} })
  },

nuxtjs / Auth Документы

Однако вывсе еще не использую asyncData, как это должно быть, потому что вы не возвращаете ничего, что может быть объединено с данными, поэтому вы можете попробовать сделать так:

async asyncData (context) {
    let { response } = await axios.get('dataURL', {}, { headers: {"Authorization" : `Bearer ${context.app.$auth.getToken('local')}`} })
    return { token: response }
  },

Сказав это, я не очень понимаю, почемуВы хотите получить свой токен в компоненте.Конечно, вам лучше получить его глобально через nuxtServerInit в вашем магазине.

0 голосов
/ 06 июля 2019

Может быть, вы можете попытаться передать контекст (это) после вашего звонка?Например:

await axios.get('dataURL', {}, { headers: {"Authorization" : `Bearer ${this.$auth.getToken('local')}`} }),this;
...