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+ одна или несколько цифр (= идентификатор пользователя)
  • $ конец строки
Другие вопросы по тегам