按要求的用户角色显示flashbag消息

时间:2015-01-12 10:12:05

标签: security symfony access-control

当我通过防火墙保护Symfony2项目的某个区域时,人们被重定向到登录页面。如何在该登录页面上显示动态消息,告知用户所需的用户角色?

E.g。我的项目有四个不同的页面

  • /不受限制,
  • /admin需要ROLE_ADMIN
  • /user需要ROLE_USER
  • /beta需要ROLE_BETA_USER

如果用户尝试访问/beta,则在登录页面上方应有信息

  

此区域仅限测试用户使用。

...并相应地针对/admin/user。有没有办法全局设置此消息(无需单独在每个控制器操作上设置它)?

1 个答案:

答案 0 :(得分:1)

您可以通过实施AccessDeniedHandlerInterface来完成此工作。

handle方法中,您可以检查请求路径并添加适当的Flash消息。

您必须在security.yml注册AccessDeniedHandler服务:

security:
    firewalls:
        main:
            access_denied_handler: my.access_denied_handler_service_name