1

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

www.myserver.com/api/v1/public/testaction1
www.myserver.com/api/v1/public/testaction2

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

www.myserver.com/api/doc/

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

安全.yml

 firewalls:
        wsse_secured:
            pattern:   ^/api/[^doc | ^v1\/public/].*

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

编辑

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

access_control:
        - {path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY}
4

1 回答 1

4

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

firewalls:
  api:
    pattern: ^/api
  doc:
    pattern: ^/api/doc
    security: false
  public:
    pattern: ^/api/public
    security: false

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

于 2014-12-10T15:33:57.933 回答