我正在使用 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}
最佳答案
您需要为匿名访问添加特定的防火墙:
firewalls:
api:
pattern: ^/api
doc:
pattern: ^/api/doc
security: false
public:
pattern: ^/api/public
security: false
另一种选择是允许匿名用户访问这两个防火墙,但我不知道它是否适用于远程 curl 调用,例如
关于php - symfony2 从身份验证中跳过 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27402640/