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

Авторизация через соц. сети в концепции 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 можно проверять, не закрыто ли окно входа (а оно должно закрыться после входа): вот пример. Отправляете не сервер запрос (действительно вошли?), если да, то перерисовываете интерефейс (отправляете юзера на другой роут).
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы