我正在为我的 REST 应用程序使用 FOSOAuthBundle
我希望我的大多数路线都需要授权,但是有一些路线应该可以公开访问
我的 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
要求)?