Как обрабатывать аутентификацию, когда пользователь находится в автономном режиме с помощью Angular PWA? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть угловое приложение с PWA .Моя главная задача - разрешить пользователю использовать приложение в автономном режиме без подключения к интернету.Вопрос в том, как мне это сделать с IdentityServer и OIDC ?Я рассматриваю следующее решение: если у меня есть действительный «токен обновления», то, пока интернет-соединение не подключено, я буду считать пользователя аутентифицированным.Конечно, это означает, что пользователь уже вошел в систему, находясь «в сети».

Любые предложения по обработке «входа в систему», пока он находится «в автономном режиме».Например, ОС Windows использует своего рода «локальное хранилище» для аутентификации пользователей, даже если у них нет подключения к Интернету.Любые предложения, ценится

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

По поводу вашего комментария:

Моя проблема связана с "токенами с истекшим сроком действия" и разрешением пользователю "использовать" приложение, даже если они находятся "в автономном режиме"

Я бы создал некоторую проверку внутри приложения, которая ограничивает время, в течение которого пользователь может использовать приложение в автономном режиме, например, отметку времени.По истечении этого времени вы можете удалить токен доступа / обновления и принудительно войти в систему (то есть заставить пользователя снова подключиться к сети и запустить новый процесс аутентификации / авторизации).

0 голосов
/ 28 февраля 2019

Как я вижу, OIDC не имеет подобных функций.

Вы можете проверить перехватчик , если пользователь онлайн .Если нет, вы можете использовать IndexedDB для хранения запроса.

Существует событие , на которое вы можете подписаться с помощью Renderer2 listen .Если событие произошло, уведомите службу, чтобы попытаться получить операции из IndexedDB и воспроизвести их после обновления токена.

Если вы используете redux, вы также можете сохранить действия, которые не удалось завершить.

0 голосов
/ 18 февраля 2019

Предположим, что у пользователя есть подключение к Интернету и войдите в приложение:

  • Сохраните маркер обновления localstorage.setItem('resfreshToken', yourToken)
  • Когда пользователь открывает приложение, отметьте localstorage.getItem('refereshToken')
  • Если он не нулевой или пустой, то пользователь аутентифицирован.

Насколько я знаю refresh tokens не истекает, так что вы всегда можете использовать токен обновления, чтобы получить новыймаркер.Поэтому, когда интернет-соединение восстановилось, вы можете использовать refresh token, чтобы запросить новый access token и отправить изменения данных.

...