当我通过防火墙保护Symfony2项目的某个区域时,人们被重定向到登录页面。如何在该登录页面上显示动态消息,告知用户所需的用户角色?
E.g。我的项目有四个不同的页面
/
不受限制,/admin
需要ROLE_ADMIN
,/user
需要ROLE_USER
,/beta
需要ROLE_BETA_USER
。如果用户尝试访问/beta
,则在登录页面上方应有信息
此区域仅限测试用户使用。
...并相应地针对/admin
和/user
。有没有办法全局设置此消息(无需单独在每个控制器操作上设置它)?
答案 0 :(得分:1)
您可以通过实施AccessDeniedHandlerInterface
来完成此工作。
在handle
方法中,您可以检查请求路径并添加适当的Flash消息。
您必须在security.yml
注册AccessDeniedHandler服务:
security:
firewalls:
main:
access_denied_handler: my.access_denied_handler_service_name