我正在使用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模式:
security.yml
firewalls:
wsse_secured:
pattern: ^/api/[^doc | ^v1\/public/].*
似乎无法正常工作,请您帮助我从身份验证中跳过这些网址吗?我错过了正确的正则表达式吗?
修改
这是我的security.yml的访问控制部分
access_control:
- {path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY}
答案 0 :(得分:3)
您需要为匿名访问添加特定防火墙:
firewalls:
api:
pattern: ^/api
doc:
pattern: ^/api/doc
security: false
public:
pattern: ^/api/public
security: false
另一种选择是允许匿名用户访问这两个防火墙,但我不知道它是否适用于远程卷曲调用,例如。