2013-06-02 7 views
3

Использование OAuth 2 Мне нужно ограничить доступ пользователей только к разрешенным ресурсам, где соединение с API осуществляется через прокси-сервер ext.js REST. Прокси-сервер ext.js заботится о поиске данных и поддерживает отношения модели. Я не нашел элегантный способ сделать разные вызовы от прокси-сервера до бэкэнд в зависимости от пользователя, зарегистрированного.Sencha touch 2 oauth2 authentication

Мне интересно, должен ли прокси-сервер быть другим для каждого пользователя, зарегистрированного в моем приложении, потому что каждый пользователь имеет свой токен доступа.

Другой вариант заключается в том, чтобы прокси-сервер знал о зарегистрированном пользователе во время процесса инициализации прокси-сервера и сохранял эту информацию постоянным образом.

Неужели кто-то решил аналогичную ситуацию раньше?

ответ

1

В статье приводится подробное объяснение того, как использовать OAuth2 с Sencha Touch.

Есть несколько способов использования OAuth. Один использует перенаправления после первоначальной проверки подлинности (для этого вы можете использовать iFrame внутри входа в систему Sencha). Другой использует ваш серверный сервер в качестве посредника для сервера OAuth, который может избежать решения iFrame, но требует больше логики на вашем сервере.

Затем вы можете использовать файл cookie сеанса, который будет отправлен во все HTTP-запросы, включая ваши вызовы REST. Большинство сторонних сторон поддерживают файлы cookie сеансов, и поэтому все, что вам нужно сделать, это поиск идентификатора пользователя, который вы сохранили в объекте сеанса, как часть вашего кода REST API.

Другой вариант - установить настраиваемый HTTP-заголовок в каждом вызове REST, требующем аутентификации. Чтобы избежать дублирования кода, создайте производный класс из прокси-класса Sencha для установки заголовка, содержащего токен доступа. Вы можете сохранить токен доступа в хранилище или на объекте Application или в качестве статического значения в прокси-сервере. Я сделал это как для прокси-вызовов REST, так и для прокси-вызовов Sencha Direct.

AJAX Proxy заголовок свойство: