REST API: сохраняйте аутентификатор Symfony PHPSESSID по умолчанию для использования API в браузере

Я разрабатываю REST API для приложения для смартфона. Аутентификация производится с помощью токена, указанного в заголовках. Я создал аутентификатор (который наследует AbstractGuardAuthenticator), добавил его в список охранников в моем security.yml, и все работает нормально.

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

На веб-сайте пользователь может аутентифицироваться либо с помощью формы имени пользователя / пароля по умолчанию, предоставленной Symfony, либо с помощью Facebook (благодаря HWIOAuthBundle). В обоих случаях аутентификация основана на файле cookie PHPSESSID и токене, который создается для аутентификации пользователя.

У меня вопрос: как я могу настроить свое приложение так, чтобы доступ к API контролировался либо моим пользовательским токеном, либо стандартным аутентификатором symfony/HWIOauthBundle в зависимости от запроса?

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

ОБНОВЛЕНИЕ 2016-12-29: Я удалил свой раздел брандмауэра API в security.yml, теперь у меня есть только один основной раздел. В этом разделе у меня есть 3 "слушателя": form_login, oauth (для facebook) и моя охрана. Это прекрасно работает таким образом. Единственная проблема, с которой я могу столкнуться, заключается в том, что части сайта, которые раньше были защищены только form_login / oauth, теперь также доступны для удовлетворения моей защиты, т.е. добавьте действительный токен в заголовки. Я не вижу, что может пойти не так, но это не кажется действительно строгим. У кого-нибудь есть идеи по этому поводу?

0 ответов

Другие вопросы по тегам