在symfony2登录成功之后和重定向之前做一些事情?

时间:2013-04-09 17:44:19

标签: events authentication symfony hook

我现在正在搜索一段时间,以获取有关如何在symfony2中验证成功后执行某些操作的信息。我想在使用旧哈希成功验证后立即重新使用用户密码来使用bcrypt。当我仍然有有效的普通密码时,我需要这样做,所以它应该在凭证检查之后和重定向之前。

任何线索如何实现?

我在Symfony中发现了一些关于事件调度程序的内容,但是我在成功验证后无法找到是否有任何事件。

如果我试图以错误的方式做这件事并提出一些更好的方法,请纠正我。

// 修改

好的,我发现事件在auth成功之后被触发,它被称为security.authentication.success。所以我现在可以附加到这个事件,但现在我不知道我的边界代码应该在哪里附加我的事件监听器?我应该使用/src/Pkr/BlogUserBundle/DependencyInjection/PkrBlogUserExtension.php方法load()进行此操作吗?

1 个答案:

答案 0 :(得分:30)

您可以指定在成功登录时执行的登录成功处理程序。

例如,您的security.yml

firewalls:
    main:
        pattern: ^/
        form_login:
            success_handler: my.security.login_handler

现在创建实现Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface的类,并且在成功登录后,您可以根据需要执行任何操作并处理重定向。

/**
 * 
 */
public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
    // handle it and return a response
}

然后在您的services.xml中为您的bundle创建一个具有该名称的服务,或者使用新创建的处理程序在config.yml中创建一个服务。

我最初在本教程后面了解了如何执行此操作:

http://www.reecefowell.com/2011/10/26/redirecting-on-loginlogout-in-symfony2-using-loginhandlers/