RESTFul OAuth с FOSOAuthServer / FOSRest & FOSUser
У меня возникают трудности, чтобы полностью понять концепцию создания клиента, объясненную здесь. Я проследовал за постом, чтобы настроить OAuthBundle, и попытался внести изменения, необходимые для соответствия FOSUser. Хотя я не уверен, что это идеально.
Моя ситуация
- Мой сайт представляет собой API RESTFul, который возвращает только json или xml. Мой фронтенд будет в AngularJS
- Я объединил FOSUser, FOSRest и FOSOAuth, возможно, у меня есть ошибки в конфигурации.
Эта проблема
Я закончил настройку первой части статьи до doctrine:schema:update
команда. Теперь я должен создать клиента.
Как я могу установить безопасность для частей ^/api
для разных ролей?
пример:
- Анонимные пользователи могут получить доступ к POST
/api/users
но не GET /api/users. - Только пользователи с
ROLE_ADMIN
может получить доступ к УДАЛИТЬ/api/users/{id}
Для тестирования я использую Postman (который поддерживает OAuth1 & 2, а также другие средства аутентификации).
1 ответ
Использование выражений в security.yml
Чтобы обеспечить безопасность определенных маршрутов с помощью условной комбинации (запрос)-метода И (пользователя)-рол...
... вы можете использовать выражения в вашем security.yml
,
Дополнительную информацию можно найти в главе документации " Защита с помощью выражения".
пример
Только пользователи с ролью ROLE_ADMIN
должен быть разрешен доступ /api/users/{id}
используя DELETE
запрос:
# app/config/security.yml
security:
# ...
access_control:
- path: "^/api/users/\d+$"
allow_if: "'DELETE' == request.getMethod() and has_role('ROLE_ADMIN')"
Объяснение регулярных выражений
^
начинается с\d+
одна или несколько цифр (= идентификатор пользователя)$
конец строки