Доступ к магазину Vuex из модуля javascript - PullRequest
0 голосов
/ 18 июня 2020

У меня есть модуль out javascript, и я хочу получить ключ авторизации из хранилища vuex

Это мой код, похоже, он работает

import store from '../../../store';

class ExternalApi {
  constructor() {
    const that = this;
    that.configuration = { apiKey: '', basePath: '/api/v2' };

    that.authorizationHeader = function authorizationHeader() {
      const cstore = store;
      if (cstore && cstore.state && cstore.state.accessToken) {
        that.configuration.apiKey = cstore.state.accessToken;
      }
      const localVarHeaderParams = { };
      localVarHeaderParams.authorization = `Bearer ${that.configuration.apiKey}`;

      return localVarHeaderParams;
    };
    this.list = function list(params) {
      const localVarPath = `${that.configuration.basePath}/list`;
      const localVarHeaderParams = that.authorizationHeader();
      return axios....
    };
}

I хочу знать 2 вещи:

  1. Это способ подключения к магазину из javascript или есть лучший способ сделать это
  2. Может ли этот код принести мне некоторые ценные бумаги проблемы.

1 Ответ

0 голосов
/ 18 июня 2020

Отвечая на ваш первый вопрос, если вы хотите использовать хранилище извне Vue просто используйте его API, как вы делаете, хотя вам действительно не нужно проверять хранилище или состояние, которое нужно инициализировать.

Что касается безопасности, хранение токена авторизации в JS будет уязвимо для атак XSS , лучший способ избежать (или смягчить) их - реализовать надежную Политику безопасности контента (CSP). и использует небольшое (5-10 минут) время жизни для ваших токенов.

Кстати, вам не нужно переименовывать store в cstore, и если вы используете class methods вместо добавления свойств функции в конструктор вам не нужно жонглировать this. Также обратите внимание, что сохранение токена в памяти не выдержит обновления страницы sh, поэтому вы можете сохранить его в sessionStorage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...