AWS Cognito + aws-ampify: состояние сеанса всегда сохраняет пользователя в системе? - PullRequest
1 голос
/ 24 мая 2019

Я использую AWS Cognito и aws-усиление для управления аутентификацией пользователей.Когда я загружаю свое приложение, я звоню Auth.currentSession(), который, кажется, всегда возвращает пользователя, в котором я вошел, как если бы я не выходил из системы явным образом, вызывая Auth.signOut().

Я в порядке с этим долженпользователь выбирает «держать пользователя вошедшим в систему», но если он этого не делает, как бы я мог убедиться, что пользователь вышел из системы после того, как он покинул приложение?

Я попытался добавить прослушиватель событий в своемlogin() метод, но он не сработал, т.е. пользователь все еще вошел в систему, когда я вернулся в приложение:

.
.
.

if (!keepSignedIn) {
    window.addEventListener('unload', function(event) {
        Auth.signOut();
    });
}

1 Ответ

1 голос
/ 25 мая 2019

Я почти уверен, что метод logout () создает обещание - он работает асинхронно.Таким образом, страница, вероятно, уничтожается до выполнения кода выхода из обещания.

Вы можете подтвердить это, выполнив console.log(Auth.signOut());.Если это обещание, оно будет регистрировать Promise { <pending> }

Невозможно остановить выгрузку страницы, так как это было бы плохо, если бы мы могли.

Вам нужна синхронная функция выхода из системы,К счастью, вы можете просто очистить локальное хранилище браузера, что является синхронной операцией.(Локальное хранилище - это место, где Amplify хранит токены аутентификации.)

if (!keepSignedIn) {
  window.addEventListener('unload', function(event) {
    localStorage.clear();
  });
}

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

...