Как в vue -ресурсах прочитать значение сеттеров хранилища? - PullRequest
0 голосов
/ 16 января 2020

В моем проекте vue / cli 4 / vuex / vue -ресурс я читаю данные из защищенной области с паспортом из внутреннего интерфейса API, как в маршрутах / API. php:

Route::group(['middleware' => 'auth:api',  'prefix' => 'adminarea', 'as' => 'adminarea.'], function ($router) {
    ...
    Route::get('dashboard', 'API\Admin\DashboardController@index');

Я нашел как установить токен доступа на vue перехватчик ресурсов для заголовков аутентификации

и в src / main. js Я добавил метод:

Vue.http.interceptors.push((request, next) => {   
/*
  console.log('request::')
  console.log(request)

  console.log('this::')
  console.log(this)

  console.log('Vue::')
  console.log(Vue)

  console.log('Vue.$store::')
  console.log(Vue.$store)

  console.log('Vue.$store.getters.token::')
  console.log(Vue.$store.getters.token)
*/

  request.headers.set('Authorization', 'Bearer XXX key')
  request.headers.set('Accept', 'application/json')
  next()
})

и это работает для меня, если я заполняю токен на предъявителя вручную, но я не нашел, как прочитать его из магазина? В моем коде выше я не смог прочитать значение $ store.getters ... Какой правильный путь?

ОБНОВЛЕННЫЙ БЛОК # 1: Если в src / main. js Я комментирую строка:

import store from './store'

и добавьте строку:

import store from './store.js';

, затем в консоли я получил ошибку:

 ERROR  Failed to compile with 1 errors                                                                                                                                                                                           12:55:54 PM

This relative module was not found:

* ./store.js in ./src/main.js

Но с

import store from './store'

Мне не удалось получить доступ к хранилищу данных

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 января 2020

Попробуйте импортировать файл Vuex вместо попытки доступа к $store через экземпляр Vue.

import store from './store.js';

Vue.http.interceptors.push((request, next) => {   
      request.headers.set('Authorization', `Bearer ${store.getters.token}`)
      request.headers.set('Accept', 'application/json')
      next()
})
0 голосов
/ 16 января 2020

Я нашел решение в письменной форме токен в localStorage при входе в систему и

reading this value from ue.http.interceptors.push((request, next) => { 
  let token = localStorage.getItem('token')
  request.headers.set('Authorization', 'Bearer '+token)
  request.headers.set('Accept', 'application/json')
  next()
})

Это работает для меня!

...