Какой общий способ реализовать oauth2 auth в однострочном приложении на основе углов? Возможно ли реализовать его без перезагрузки страницы? Если нет - что является лучшим способом передачи данных auth обратно в угловой код со страницы?oauth2 auth on SPA на основе Angular.js + Node.js/PassportJS
ответ
сервер авторизации должен предоставить API для проверки подлинности пользователя и возвращает маркер доступа без перенаправления. В этом примере я буду использовать facebook в качестве сервера авторизации и сервера ресурсов для более легкого понимания. Поток выглядит следующим образом:
Ваш пользователь нажмет нажатие кнопки.
Поскольку это СПА, построенный с угловыми углами, браузер отправляет ajax на ваш сервер для получения данных.
На стороне сервера, вы обнаружите, что это действие требует данных от сервера ресурсов (facebook), вместо перенаправления браузера к ресурсам сервера, как мы обычно делаем, сервер отправляет ответ с пользовательский статус (или любая информация, указывающая, что этому действию нужен токен доступа) в браузер.
В браузере, когда вы получаете ответ от сервера в своей функции ajax . Вы можете проверить реакцию и выяснить , что это действие необходимо маркер доступа
Браузер сначала пытается получить этот маркер доступа с сервера ресурсов (если пользователь уже вошел в систему). При работе с facebook с использованием FB javascript SDK мы обычно используем функцию FB.getLoginStatus.
a. Если мы можем получить токен доступа в обратном вызове успеха (пользователь уже зарегистрирован ), просто отправьте этот токен доступа на сервер, чтобы получить данные (используя ajax).
b. Если пользователь еще не вошел в систему, используйте javascript , чтобы предложить пользователю войти в систему, отринув кнопку входа в систему, и пользователь должен нажать на нее. При работе с facebook с помощью FB javascript SDK мы обычно используем функцию FB.login, когда пользователь нажимает кнопку входа. После успешного входа в систему мы получим токен доступа в успешном обратном вызове и просто отправьте его на сервер, чтобы получить ответ (используя ajax).
Там нет перезагрузки страницы, потому что все действия выполняются с помощью AJAX (без редиректа браузера)
- 1. Angular.js SPA: авторизация UI-маршрутизатора против PHP Auth
- 2. Angular.js (SPA) время загрузки выпуск
- 3. Интеграция Angular.js SPA с .NET
- 4. SPA (Угловая) Аутентификация с API и сервером Auth на отдельном домене для поставщиков OAuth2; Google, Facebook
- 5. Angular.js auth service: Подождите ответа на ресурс
- 6. SSO логин на основе OAuth2 AccessTokenProvider
- 7. Реализация windows auth с ASP.NET Core SPA
- 8. CakePHP основан на основе auth
- 9. Как обрабатывать несколько стратегий auth на sails.js SPA?
- 10. Basic Auth on bluemix
- 11. Spring Oauth2 RemoteTokenServices error on extractAuthentication
- 12. https://accounts.google.com/o/oauth2/auth? Ошибка: redirect_uri_mismatch
- 13. Пример данных сеанса ember-simple-auth-oauth2
- 14. Angular.js «Контроллер как ...» + $ scope. $ On
- 15. Политики auth on expressJS
- 16. Смешивание плагина на основе jQuery с angular.js
- 17. Фильтр массива angular.js на основе диапазона
- 18. Класс 'Google \ Auth \ OAuth2' не найден
- 19. Получение oauth2-bearer, работающего с простым auth
- 20. redirect_uri вопрос в REST основе oauth2 запрос
- 21. angular.js on-keyup не работает
- 22. OAuth2 и управление доступом на основе ролей
- 23. как поддерживать состояние через страницы в SPA с помощью angular.js
- 24. OAuth2 auth на почтальоне, когда токен под рукой
- 25. Добавление более одного клиента на сервер OAuth2 Auth Spring
- 26. Безопасность Angular.js SPA с ASP.NET MVC и WebApi
- 27. angular.js: Как использовать шаблоны и JSON для создания SPA
- 28. Laravel timeout on auth login
- 29. R dropbox auth on Ubuntu
- 30. Google auth handler on swift
Спасибо большое за ответ. Не могли бы вы пояснить немного точки 3. Я не понимаю, как сделать это без перенаправления страниц. Поскольку нам нужно перенаправить на страницу facebook, чтобы иметь возможность использовать наши данные для приложения. –
@silent_coder: в пункте 3 ваш сервер должен вернуть нормальный ответ, как и любые другие запросы ajax на ваш сервер (но с информацией, чтобы указать, что этому действию нужен токен доступа). На стороне клиента вы получаете этот ответ в своей функции обратного вызова ajax (на шаге 4) и создаете последующие запросы ajax для facebook. –
Я думаю, вы не понимаете этого процесса.Когда вы используете какой-либо профайлер aAuth2, например facebook, когда вы отправляете первоначальный запрос в facebook на разрешение на запрос, ваше приложение перенаправляется на страницу facebook, где вы можете разрешить или запретить использование некоторых связанных с учетной записью данных, а затем facebook перенаправляет вас на страницу обратного вызова , Это общий рабочий процесс oAuth2. Поэтому я не понимаю, как сделать это с помощью ajax, и ваш ответ не описывает его. –