我有一个事件监听器,当用户登录我的 Symfony 设置时应该触发它。
我的 services.yml 中有以下内容
...
d_user.login_listener:
class: D\UserBundle\EventListener\LoginListener
arguments: []
tags:
- { name: 'kernel.event_subscriber', event: 'security.interactive_login' }
在我的登录监听器中,我只有这个:
<?php
namespace D\UserBundle\EventListener;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class LoginListener implements EventSubscriberInterface
{
public function onSecurityInteractiveLogin(InteractiveLoginEvent $event)
{
echo 'user logged in';
}
public static function getSubscribedEvents()
{
return array(
// must be registered before the default Locale listener
'security.interactive_login' => array(array('onSecurityInteractiveLogin', 18))
);
}
}
在我的开发服务器上,我在重定向之前正确地看到了文本“用户登录”,但在我的生产服务器上,它只是在没有触发事件的情况下登录。我稍后会修改它以在用户登录时设置会话变量。我只需要调用该方法。
有什么建议吗?我尝试在生产环境中清除 prod 和 dev 的缓存,但这没有帮助。