[英]Symfony2 get to the access_control parameters located in the security.yml
[英]Symfony2 - set security access_control to allow only authenticated anonymously
假设我在security.yml
下有access_control
块:
access_control:
- { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/reset-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }
在这种情况下,每个人都可以进入homepage
和reset-password
页面。 但我想仅允许匿名身份验证的用户使用这些页面。 完全通过身份验证的用户应该收到403 access denied error
或404 page not found
。
根据allow_if
文档我应该是ablo来创建角色表达式来定义访问。 但如果我这样做:
access_control:
- { path: ^/reset-password, allow_if: "has_role('IS_AUTHENTICATED_ANONYMOUSLY') and not has_role('IS_AUTHENTICATED_FULLY')" }
现在遵循这个想法,不应该允许完全认证的用户(登录)访问该页面并且匿名认证应该能够访问,但是,不幸的是,没有一个用户能够访问它...
我缺少什么想法?
UPDATE
通过正确的答案,正如以下建议的那样:
- { path: ^/reset-password, allow_if: "is_anonymous() and !is_authenticated()" }
您确定可以使用has_role()
测试IS_*
吗? 这些角色扮演角色,但他们不是角色。 也许这就是它总是返回false
的原因:
看来你最好在allow_if
表达式中使用is_anonymous()
和is_authenticated()
自定义函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.