2016-03-04 84 views
0

TL的顺序; DR 你可以设置symfony核心听众的优先级,以便将GuardAuthenticationListenerRouterListener之前进行发射修改核心听众

-

我有一个旧的应用程序和symfony的“微内核”的应用程序坐在并排,虽然两者交织在一起的一些东西,在symfony的应用程序需要在某些点从传统的应用程序使用的比特和现在我第一次需要从传统应用中调用一些symfony的东西。

我进去详细讨论此之前,这里是上设立http://jenko.me/legacy/2016/02/03/an-escape-route-from-legacy-with-stackphp-and-the-symfony-microkernel/

所以我迁移遗留应用程序的安全性方面过来的Symfony,所有这一切都还没有一些背景阅读太糟糕了,主要是在这篇博文http://php-and-symfony.matthiasnoback.nl/2012/07/symfony2-security-using-advanced-request-matchers-to-activate-firewalls/和我之前提到的博客文章中列出的技术。对于基于URL的访问控制,这一切都工作得很好。

在遗留代码中有地方,但我需要调用isGranted()调用来检查用户是否有权限。如果路由存在于Symfony应用中,这一切都可以正常工作,即它已通过Symfony生命周期并且所有侦听器都已触发。

哪里我的问题所在是,当应用程序有哪些在symfony的应用程序存在的路线由RouterListener那么其他听众扔NotFoundException(如(即它属于通过对遗留应用程序)为用户创建令牌所需的安全监听器)不会触发。

因此,TL; DR我想知道您是否可以更改核心侦听器的优先级顺序。在我的情况,我想安全监听器(尤其是GuardAuthenticationListenerRouterListener之前解雇。

有一种解决方法是增加所有航线symfony的应用程序,即使他们没有被处理,这样做至少允许所有的听众开火,并因此给我我需要的令牌isGranted检查

+0

仅供参考:如果您绝对需要这样做才能使您的应用程序正常工作,那么在99.9%的情况下,您有一个根本性错误的设计。 –

回答

0

好吧,想更多关于我的'解决方法',我可以使用它作为一种更好的方法。我的路由..

catch_all: 
    path: /{route} 
    requirements: 
     route: .* 

因此,所有路线都会陷入我的Symfony应用程序中,因此会通过听众跳舞,最终如果没有处理,就会流向遗留应用程序。邦扎。