假设我的access_control块在security.yml下面
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')" }现在,按照这个想法,完全通过身份验证的用户(登录)不应该被允许访问页面,匿名身份验证应该能够访问,但不幸的是,没有一个用户能够访问它.
知道我错过了什么吗?
更新
这使它像下面所建议的那样,以正确的答案发挥作用:
- { path: ^/reset-password, allow_if: "is_anonymous() and !is_authenticated()" }发布于 2016-10-11 09:06:19
您确定可以使用IS_*测试has_role()吗?这些角色很像角色,但它们不是角色。也许这就是它总是返回false的原因:
似乎您应该在is_anonymous()表达式中更好地使用allow_if和is_authenticated()自定义函数。
https://stackoverflow.com/questions/39973519
复制相似问题