Symfony2 - 当前用户访问路由

时间:2014-03-11 19:18:37

标签: php security symfony routing

我在Symfony应用程序的安全配置中设置了access_control,因此,很明显,应用程序可以检测当前用户是否可以访问当前请求(工作正常)。我想要的是让应用程序弄清楚当前用户是否可以访问Controller动作中的另一个请求(例如,不同的路径或方法)。

在Symfony中执行此操作的正确方法是什么?我可以一起破解并访问当前请求的FirewallContext并使用正确的AccessMap寻找合适的侦听器,但这很难看,我担心它会轻易破解。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这个问题已经有一个星期没有得到答复所以我在此期间找到了一个不错的解决方案,如果有人发现这个并想做类似的事情。

首先,我将AccessListener::handle(GetResponseEvent)的功能撤出到新的类/方法Authorization::checkAccess(Request),后者使用Request个对象而不是GetResponseEvent

接下来(这取决于checkAccess是否与handle处理请求的方式不同)的必要性,我创建了一个单独的类来覆盖AccessListener并使用{{1执行检查(并通过设置Authorization::checkAccess(Request)参数在配置中交换出来)

接下来,在配置中设置一个服务,以构造一个security.access_listener.class对象,其中包含注入Authorization的所有参数。

最后,为了检查特定请求,我在控制器中使用了这段代码:

AccessListener

我希望这可以帮助那些人...