【发布时间】:2017-02-19 18:35:55
【问题描述】:
假设我在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。
根据documentation 和allow_if,我应该创建角色表达式来定义访问权限。但如果我这样做:
access_control:
- { path: ^/reset-password, allow_if: "has_role('IS_AUTHENTICATED_ANONYMOUSLY') and not has_role('IS_AUTHENTICATED_FULLY')" }
现在遵循这样的想法,完全身份验证的用户(登录)不应该被允许访问页面,匿名身份验证应该能够访问,但不幸的是,没有用户能够访问它......
任何想法我错过了什么?
更新
这使它按照正确答案的建议工作:
- { path: ^/reset-password, allow_if: "is_anonymous() and !is_authenticated()" }
【问题讨论】:
标签: php symfony access-control symfony-security