访问所有网页,我需要为拒绝访问一个除外用户与角色ROLE_UNFILLED_USER所有页面。我怎样才能做到这一点使用ACCESS_CONTROL在security.yml如何否认Symfony的2
1
A
回答
0
的第一步是定义一个角色层次结构,其中从ROLE_UNFILLED_USER
ROLE_USER
继承:
# app/config/security.yml
role_hierarchy:
RULE_USER: ROLE_UNFILLED_USER # <-- This is the crucial part
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_API_USER, ROLE_ADMIN]
现在,您可以将您的访问控制:
access_control:
- { path: "^/user/worksheet", roles: ROLE_UNFILLED_USER }
- { path: "^/bill", roles: ROLE_USER }
- { path: "^/address_book", roles: ROLE_USER }
- { path: "^/friendinvite", roles: ROLE_USER }
- { path: "^/admin", roles: ROLE_ADMIN }
#- { path: "^/", roles: IS_AUTHENTICATED_ANONYMOUSLY }
每当与角色ROLE_UNFILLED_USER
尝试访问其他路线比^/user/worksheet
他们应该看到一个403(禁止)的用户。如果您添加其他路线,请确保正确订购它们; Symfony将使用它找到的第一条匹配路线,这意味着更具体的路线应该位于列表的顶部,底部的通用路线更多!
由于ROLE_USER
扩展为ROLE_UNFILLED_USER
,具有该角色的用户可以访问所有页面(包括工作表)。
有一个警告你的方法不过,当用户登录他们被自动重定向或者到指定的target_path或先前请求的路径。这意味着,如果您的用户登录,他们很可能会看到一个403页,并且会为他们无法访问而感到困惑。解决方案:创建一个自定义AuthenticationProvider(尤其是看Listener)。
0
你需要使用一个登录监听器,并重定向用户,如果他有一定的作用。或者可能只是使用请求侦听器。
相关问题
- 1. Symfony 2用户认证
- 2. 如何使用Symfony的2
- 3. Symfony 2中的默认验证器
- 4. 的Symfony 2选择字段默认值
- 5. 手册认证检查Symfony的2
- 6. Symfony的2 - 如何同步保持2个symfony应用程序
- 7. 中的Symfony 2中的Symfony 2
- 8. Symfony 2,默认为整个资源
- 9. Symfony 2认证与(学说)实体
- 10. symfony 2表单显示默认值
- 11. Symfony 2或Symfony 1.4?
- 12. Symfony的2:
- 13. symfony的2
- 14. 在Symfony的2
- 15. symfony的2
- 16. Symfony 2的Jobeet
- 17. 如何在symfony的2路线
- 18. 如何安装Symfony 2的Eclipse插件?
- 19. 如何使用Symfony 2中的ChoiceListInterface?
- 20. Symfony 2.我如何设置实体的嵌入表单的默认值?
- 21. symfony的2学说2
- 22. symfony的2 form_row有2场
- 23. 的foreach symfony的2
- 24. Symfony的2 ServiceNotFoundException的
- 25. 的BaseURL symfony的2
- 26. Cakephp 2 acl不否认任何行动
- 27. Symfony如何扩展默认包配置?
- 28. 在Symfony 2/Doctrine 2中是否有“generate-migrations-db”的等价物?
- 29. 加入symfony的2
- 30. symfony的2 +肥皂
你应该检查*安全* [http://symfony.com/doc/current/book/security.html]的文档。如果您试图实现的是拒绝匿名访问,即拒绝任何未登录的用户,则可以在防火墙定义中使用'anonymous:false'。也许你可以扩展为什么你需要额外的角色以及你的security.yml的外观?这样可以更容易地帮助您,看看您是否正在以“错误”的方式处理您的问题。 – dbrumann
我需要谁不指定所有信息用户可以只查看一个网页 - /用户/工作表中他的角色是USER_UNFILLED_USER 其他用户(即指定的所有信息)可以查看除外/用户/工作表 这里所有的页面被我安全的一部分.yml
– Ofer