Закрыть или перенаправить вкладку при успешной аутентификации Google?

У меня есть проект, написанный на perl-dancer и angular. Я использую Google в качестве системы openId.

На некоторых моих страницах есть сетка редактирования с кнопкой сохранения. Чтобы избежать потери несохраненных данных по истечении срока действия сеанса (сеанс, созданный из perl-dancer), у меня есть угловой перехватчик, который прослушивает 401 ошибку сервера и открывает угловой модальный режим, удерживая кнопку «Вход в Google» (это запускается по запросу сервера после сессия истекает).

Я установил открытие формы Google на новой вкладке вместо перенаправления с исходной страницы, чтобы не потерять, возможно, несохраненные данные.

При успешной аутентификации Google новая вкладка перенаправляется на домашнюю страницу проекта, а оригинал остается с открытым модальным окном, удерживающим кнопку «Вход в Google».

Хорошо, теперь новую вкладку можно закрыть, а в исходном окне модальное окно закрыто, а несохраненные данные все еще там.

Но это плохое решение из-за того, что ему не разрешено встраивать форму входа в Google или подобное, кажется ужасным решением с точки зрения взаимодействия с пользователем.

Решения, предложения, помощь?!


person Al Ex Tsm    schedule 28.09.2015    source источник


Ответы (1)


Одним из предложений было бы проверить $state (или какую-либо другую службу) в перехватчике, чтобы вы могли установить флаг в localStorage, который указывает, что пользователь обрабатывает данные.

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

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

В контроллере этого маршрута снимите флаг localStorage. Вы даже можете использовать localStorage events для автоматического закрытия модального окна в предыдущем окне.

person charlietfl    schedule 28.09.2015