symfony2 跳过身份验证中的 url

Rah*_*hul 2 php regex symfony wsse

我正在使用 symfony2 开发 API,并且已经实现了 WSSE 身份验证。我需要跳过某些 URL 的身份验证,因为它们可以公开访问。公开访问的 URL 的格式如下:

www.myserver.com/api/v1/public/testaction1
www.myserver.com/api/v1/public/testaction2
Run Code Online (Sandbox Code Playgroud)

还有一个可公开访问的 URL,它是 API 的文档:

www.myserver.com/api/doc/
Run Code Online (Sandbox Code Playgroud)

除了上述 URL 之外,所有其他操作都应在身份验证方案下进行,我尝试在防火墙配置选项下调整 URL 模式,如下所示:

安全.yml

 firewalls:
        wsse_secured:
            pattern:   ^/api/[^doc | ^v1\/public/].*
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,您能帮我从身份验证中跳过这些 URL 吗?我是否缺少正确的正则表达式?

编辑

这是我的 security.yml 的访问控制部分

access_control:
        - {path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY}
Run Code Online (Sandbox Code Playgroud)

Chr*_*sen 6

您需要添加特定的防火墙以进行匿名访问:

firewalls:
  api:
    pattern: ^/api
  doc:
    pattern: ^/api/doc
    security: false
  public:
    pattern: ^/api/public
    security: false
Run Code Online (Sandbox Code Playgroud)

另一种选择是允许匿名用户访问这两个防火墙,但我不知道它是否适用于远程卷曲调用,例如

  • 请注意,防火墙声明中的顺序将在这里发挥作用,先到先得 (2认同)