我有应用程序,允许用户通过2个不同的渠道访问。
我启用了CSRF保护,因为我想在第一种情况下使用它。
framework:
csrf_protection: true
但是......我需要在向/ api / *地址发送请求时禁用CSRF保护,因为在这种情况下我使用OAuth进行日志记录。
我可以为特定防火墙禁用CSRF保护吗?
我的防火墙:
firewalls:
oauth_token:
pattern: ^/api/oauth/v2/token
security: false
api:
pattern: ^/api/
fos_oauth: true
stateless: true
anonymous: false
main:
pattern: ^/
form_login:
provider: chain_provider
csrf_provider: form.csrf_provider
logout: true
anonymous: true
当我向/ api / server发送POST请求时返回错误:
CSRF令牌无效。请尝试重新提交表单。
我需要为api
防火墙禁用此保护,并将其保留为main
。有可能吗?
答案 0 :(得分:2)
您可以在用户的基础上处理此问题:
http://symfony.com/doc/current/bundles/FOSRestBundle/2-the-view-layer.html#csrf-validation
构建应该通过HTML表单以及REST API处理表单的单个应用程序时,会遇到CSRF令牌验证问题。在大多数情况下,有必要为HTML表单启用它们,但将它们用于REST API是没有意义的。出于这个原因,有一个表单扩展来禁用具有特定角色的用户的CSRF验证。这当然要求REST API用户对自己进行身份验证并分配特殊角色。
fos_rest: disable_csrf_role: ROLE_API