这是我的 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/