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

pio*_*kkr 11 authentication events hook symfony

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

任何线索如何实现?

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

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

// 编辑

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

Gha*_*iss 30

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

例如,您的security.yml

firewalls:
    main:
        pattern: ^/
        form_login:
            success_handler: my.security.login_handler
Run Code Online (Sandbox Code Playgroud)

现在创建实现Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface和成功登录的类,您可以随心所欲地执行任何操作并根据需要处理重定向.

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

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

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

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