Как обрабатывать ответ перенаправления только из одностраничного браузера. - PullRequest
1 голос
/ 26 марта 2019

У меня одностраничное приложение, только веб-приложение для браузера (javascript, без серверной части).

Пользователь взаимодействует с приложением и задает некоторые переменные.

Слишком далеко после создания основногоНа странице index.html, когда пользователь хочет загрузить файл, ему необходимо пройти аутентификацию с помощью внешней службы с использованием oauth2 (используя «токен / неявное предоставление»).

После проверки подлинности служба аутентификации отвечает перенаправлением, возможно, на другую страницу (стр. 2).

Что должна сделать страница2, чтобы продолжить выполнение программы?

  • Следует ли перенаправить ее на исходную главную страницу (на этот раз с токеном доступа)?

  • Если это так, не будет ли это перезагрузить главную страницу и сбросить приложение и установленные переменные?

Спасибо,

Авнер


РЕДАКТИРОВАТЬ

Рикардо , я не используюконкретная веб-платформа, просто обычный javascript.

@ charlietfl Я нашел общий пример здесь , который выполняет postMessage между двумя отдельными окнами и работает нормально.

Я изо всех сил пытаюсь настроить его в соответствии с комментариями Рикардо, то есть

  • сделать второе окно всплывающим

  • установить отдельный файл HTMLили маршрут «noop» на вашем SPA в качестве URL перенаправления (что такое маршрут noop?)

  • опрос для этого URL во всплывающем окне

Я нашел этот пример, который создает всплывающее окно на главной странице (index.html), устанавливает перенаправление и опрос для закрытия всплывающего окна.

В моем случае я установилперенаправить URL на новую страницу (auth.html), которая выполняет postMessage с токеном доступа, на главную страницу (index.html).

Если страница auth.html не открыта в браузереser, я все еще должен ожидать получения сообщения на главной странице index.html?

Из того, что я прочитал для postMessage для работы обеих страниц, index.html, auth.html должен быть открыт в 2 отдельных вкладках вбраузер.

1 Ответ

1 голос
/ 26 марта 2019

Вы можете использовать небольшое всплывающее окно, которое загрузит необходимую конечную точку oauth2, установив отдельный HTML-файл или маршрут «noop» в вашем SPA в качестве URL-адреса перенаправления. Затем вы можете запросить этот URL-адрес во всплывающем окне, чтобы вы знали, когда его закрывать (для пользователя настроен поток oauth2).

Эта стратегия используется такими библиотеками, как vue-authenticate , response-oauth и satellizer .

Кроме того, в зависимости от конкретной службы, с которой вы пытаетесь пройти аутентификацию, вы можете найти официальные библиотеки и SDK, которые будут автоматически обрабатывать поток oauth2.

И последнее, но не менее важное: вы также можете сохранить текущее состояние вашего приложения в хранилище браузера , перенаправить на конечную точку oauth2 и указать свое приложение в качестве URL-адреса перенаправления. Когда вы возвращаетесь в свое приложение, конкретный маршрут должен иметь возможность восстановить сохраненные данные и возобновить взаимодействие с пользователем с добавлением токенов oauth2.

...