首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony2 -将安全access_control设置为只允许匿名身份验证

Symfony2 -将安全access_control设置为只允许匿名身份验证
EN

Stack Overflow用户
提问于 2016-10-11 08:46:29
回答 1查看 3.5K关注 0票数 5

假设我的access_control块在security.yml下面

代码语言:javascript
复制
access_control:
    - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/reset-password, roles: IS_AUTHENTICATED_ANONYMOUSLY }

在这种情况下,每个人都有义务输入homepagereset-password页面。但是我只允许匿名认证的用户使用这些页面。完全身份验证的用户应该获得一个403 access denied error404 page not found

根据文档allow_if,我应该是ablo来创建角色表达式来定义访问。但如果我这样做

代码语言:javascript
复制
access_control:
    - { path: ^/reset-password, allow_if: "has_role('IS_AUTHENTICATED_ANONYMOUSLY') and not has_role('IS_AUTHENTICATED_FULLY')" }

现在,按照这个想法,完全通过身份验证的用户(登录)不应该被允许访问页面,匿名身份验证应该能够访问,但不幸的是,没有一个用户能够访问它.

知道我错过了什么吗?

更新

这使它像下面所建议的那样,以正确的答案发挥作用:

代码语言:javascript
复制
- { path: ^/reset-password, allow_if: "is_anonymous() and !is_authenticated()" }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-11 09:06:19

您确定可以使用IS_*测试has_role()吗?这些角色很像角色,但它们不是角色。也许这就是它总是返回false的原因:

  • http://symfony.com/doc/current/security.html#checking-to-see-if-a-user-is-logged-in-is-authenticated-fully

似乎您应该在is_anonymous()表达式中更好地使用allow_ifis_authenticated()自定义函数。

  • http://symfony.com/doc/current/expressions.html#security-expression-variables
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39973519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档