如何基于方法从symfony2防火墙中排除api路由

Ade*_*lal 5 rest symfony fosrestbundle

所以我正在使用 fosrestbundle fosuserbundle 和 LexikJWTAuthenticationBundle 构建一个 symfony2 api,当我想访问 /api/users.json 以发布新用户时,我收到 401 错误错误凭据。

我尝试以这种方式在访问控制中添加一行:

- { path: post_user, role: IS_AUTHENTICATED_ANONYMOUSLY }   
Run Code Online (Sandbox Code Playgroud)

但它没有用。

我也试过:

- { path: post_user, role: IS_AUTHENTICATED_ANONYMOUSLY, methods:[POST] }   
Run Code Online (Sandbox Code Playgroud)

我怎样才能只排除 post 端点?

Ade*_*lal 9

解决方案是创建一个新的防火墙,禁用 url 模式的身份验证。棘手的是安全配置还允许您选择防火墙覆盖的方法。

只需将其添加到 security.yml 的防火墙中:

public:
            methods: [POST]
            pattern: ^/api/users
            security: false
Run Code Online (Sandbox Code Playgroud)

您现在可以通过 post 方法访问您的端点,并且 get put 和 delete 仍然需要您使用的任何身份验证协议:)

  • 另一件事 -> 如果在您的防火墙部分中您有其他规则,例如:'main: http_basic: true' 那么您的公共规则应该位于顶部,就在**防火墙**下方 (2认同)