Почему токен аутентификации не устанавливается в хранилище mobx после входа в систему и перенаправляется на следующий компонент - PullRequest
1 голос
/ 11 мая 2019

Я использую CoreUI с React Router DOM, React Router DOM config, Mobx и Mobx реагируют.

Я написал функцию входа в систему в моем хранилище, которая сохраняет токен аутентификации с сервера в хранилище сеансов (используяsessionStorage.setItem ('token', token)) после успешного входа в систему.

Проблема заключается в том, что следующий компонент, к которому я направляюсь после входа в систему, выполняет выборку javascript для componentDidMount и отправляет токен аутентификации носителя в заголовках.

Однако проблема, с которой я сталкиваюсь, заключается в том, что токен аутентификации не определен при получении данных (sessionStorage.getItem ('token')).Он появляется только после того, как я обновил страницу.Это похоже на загрузку компонента и он отображается перед сохранением токена аутентификации.

Интересно, это связано с асинхронными вызовами.

В моем компоненте входа в систему у меня есть эта функция:

logIn = async () => {
    const { sessionStore: ss } = this.props.RootStore;
    let login = await this.ss.login();
    if(login) {
      this.props.history.push('/dashboard');
    }
  }

Затем, в моем следующем компоненте (Dashboard), у меня есть:

componentDidMount() {
      const { companyStore : company, sessionStore : ss } = this.props.RootStore;
      if(ss.companySetup === false) {
        company.getDefaultCompany('set');
      }
    }

В функции getDefaultCompanyЯ проверяю, установлен ли sessionStorage.getItem ('token'), и если да, добавьте его в заголовок.Но это возвращается неопределенным.Если я обновляю страницу, токен устанавливается и отправляется с вызовом fetch.

Я в тупике.

...