Я использую FOSOAuthBundle для моего REST приложенияSymfony безопасности FOSOAuthServerBundle государственные и частные маршруты
Я хотел бы большинство моих маршрутов требуют разрешений, однако есть несколько, которые должны иметь доступ общественности
У меня есть следующий в моем security.yml:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
oauth_token:
pattern: ^/login
security: false
api:
pattern: ^/
fos_oauth: true
stateless: true
anonymous: false
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: [ IS_AUTHENTICATED_FULLY ] }
Например:
у меня есть продукты Entity
и Controller
Я хотел бы, CRUD
операции быть частным для Read
Так, кроме: POST, PUT, DELETE on /products(/:id)
должна быть частной, в то время как GET
должны быть публичными.
Я попытался добавить следующее к access_control:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/products$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: [ IS_AUTHENTICATED_FULLY ] }
Я думал, что это откроет все methods
на /products
, но я получаю сообщение об ошибке:
{
"error": "access_denied",
"error_description": "OAuth2 authentication required"
}
У меня есть много entities
и controllers
Я пытаюсь применить это.
Как я могу открыть определенные маршруты (включая требования method
)?
Вы также можете использовать аннотации для достижения этого, если хотите. '* @Secure (role =" ROLE_ADMIN ")' – JezEmery