symfony - symfony 2 中的同一个 url 需要多个角色

标签 symfony symfony-2.1

这是我的 security.yml 访问控制列表的样子:

access_control:
    - { path: ^/admin, roles: IS_AUTHENTICATED_FULLY }
    - { path: ^/admin, roles: ROLE_ADMIN }

我想要做的是,用户必须同时拥有两个角色(ROLE_ADMIN 和 IS_AUTHENTICATED_FULLY)才能访问定义的路径。但是根据上述规则,如果用户具有任何一个角色,则用户可以访问我不想要的定义的路径。我也尝试给出如下规则但没有成功:
 - { path: ^/admin, roles:[ROLE_ADMIN,IS_AUTHENTICATED_FULLY] }

如何添加要求用户具有两个角色才能访问定义的路径的规则?

最佳答案

IS_AUTHENTICATED_FULLY

当用户实际通过身份验证时返回 true。

Anonymous users are technically authenticated, meaning that the isAuthenticated() method of an anonymous user object will return true. To check if your user is actually authenticated, check for the IS_AUTHENTICATED_FULLY role.



因此,如果用户具有角色 ROLE_ADMIN 并已登录,则他已完全通过身份验证。因此,无需设置此要求:
- { path: ^/admin, roles: IS_AUTHENTICATED_FULLY }

因为你有(见下文)其中包括完全认证
- { path: ^/admin, roles: ROLE_ADMIN }


- { path: ^/admin, roles: IS_AUTHENTICATED_FULLY }

将允许任何用户查看管理部分。

阅读:http://symfony.com/doc/current/book/security.html

关于symfony - symfony 2 中的同一个 url 需要多个角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798554/

相关文章:

symfony - LiipImagineBundle:如何在 Controller 中应用过滤器?

php - 在 Symfony 中注册特定的表单类型 - Compiler Pass

php - 使用 Symfony 从 Doctrine 模型创建数据库

symfony-2.1 - 如何在命令类 symfony2.1 中设置语言环境

symfony - 如何更改条令标准中的命令顺序

unit-testing - 在 PHPUnit 测试中使用 Symfony Router 组件生成 URL

database - 来自现有数据库的 Symfony2 Doctrine2 映射(异常(exception))

php - 带有 if 子句的 Symfony2 session-flash 在 twig 中不起作用

php - 更改奏鸣曲管理顶部栏的文本

php - Symfony 2 - 如何删除一个包?