【问题标题】:Show flashbag message by required user role按所需用户角色显示 flashbag 消息
【发布时间】:2015-03-10 01:47:57
【问题描述】:

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

例如我的项目有四个不同的页面

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

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

此区域仅限 Beta 用户使用。

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

【问题讨论】:

    标签: security symfony access-control


    【解决方案1】:

    你可以通过实现AccessDeniedHandlerInterface来做到这一点。

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

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

    security:
        firewalls:
            main:
                access_denied_handler: my.access_denied_handler_service_name
    

    【讨论】:

    • 这听起来很有希望。我去看看!
    • 您能提供服务定义和处理程序类的示例吗?我在这里不知所措......
    • 这是我试过的:gist.github.com/anonymous/536e142c5bc49d3927c8 但我只是被重定向到登录,而我的服务没有任何处理。
    • 完整示例:alexfu.it/2012/11/09/…
    • 这就是我应用的例子,只是取出了服务参数并修改了返回。但这会破坏结果吗?
    猜你喜欢
    • 1970-01-01
    • 2019-07-10
    • 2015-08-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多