Задать вопрос

Авторизация через соц. сети в концепции SPA?

Доброго времени суток. Как правильнее организовать авторизацию через соц. сети, которые требуют у пользователя авторизацию на их сервере, в концепции SPA?
Классический процесс авторизации такой: перенаправляем пользователя на сайт соц. сети, он там авторизуется и возвращается на redirect url.
А как действовать с SPA? Единственный вариант, который приходит в голову, это через pop-up окно, но как правильнее его реализовать? При нажатии на кнопку авторизации открыть pop-up окно с формой авторизации в соц. сети, после этого процесса в том же окне вывести необходимые данные в формате json и далее уже из основного окна их выцепить и произвести перерисовку основного интерфейса?
  • Вопрос задан
  • 1824 просмотра
Подписаться 12 Простой 1 комментарий
Решения вопроса 1
@vetsmen Автор вопроса
Кому интересно решение данной задачи: все предельно просто.
Сначала создаем pop-up окно, авторизовываемся в нем и редиректимся на нашу страницу прослойку, там мы имеем уже наш jwt токен (или любой другой) и через window.opener мы можем вызвать любой метод в родительском окне. К примеру: window.opener.setToken('{token}'), перед этим определив функцию в родительском окне:
window.setToken = function(token){ /* записываем наш токен */}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
pxz
@pxz
✔ Совет: Вам помогли? Отметьте ответы решением.
Первая часть правильная: открывается окошко (Вы сами, вероятно, много раз видели такое), в нём происходит вход.
После успешного (или нет) входа, сервис (скажем, VK) отправит юзера на вашу страницу (redirect_url). Окошко закрывается.

В JS можно проверять, не закрыто ли окно входа (а оно должно закрыться после входа): вот пример. Отправляете не сервер запрос (действительно вошли?), если да, то перерисовываете интерефейс (отправляете юзера на другой роут).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 дек. 2024, в 11:07
10000 руб./за проект
23 дек. 2024, в 10:43
5000 руб./за проект
23 дек. 2024, в 10:32
2000 руб./за проект