【问题标题】:symfony2 skip urls from authenticationsymfony2 从身份验证中跳过 url
【发布时间】:2014-12-10 13:47:52
【问题描述】:

我正在使用 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 模式调整为:

security.yml

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

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

编辑

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

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

【问题讨论】:

    标签: php regex symfony wsse


    【解决方案1】:

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

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

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

    【讨论】:

    • 抱歉回复晚了,谢谢你的回答,设置不同的防火墙对我有帮助:)
    • 我试图通过单个防火墙来实现这一点(即删除某些 URL 的身份验证),因此试图采用从身份验证中跳过这些特定 URL 的模式,但是我没有获得成功。我想配置多个防火墙似乎是要走的路
    • 注意防火墙声明中的顺序在这里会起作用,先到先适用
    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多