12

我现在正在寻找有关在 symfony2 中身份验证成功后如何做某事的任何信息。我想在使用旧哈希成功认证后重新哈希用户密码以使用 bcrypt。当我仍然有有效的纯密码时,我需要这样做,所以它应该在凭据检查之后和重定向之前。

任何线索如何实现这一目标?

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

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

//编辑

好的,我发现在身份验证成功后触发了事件,它被称为security.authentication.success. 所以我现在可以附加到这个事件但现在我不确定我应该在我的边界代码中的哪个位置附加我的事件监听器?我应该在我/src/Pkr/BlogUserBundle/DependencyInjection/PkrBlogUserExtension.phpload()方法中这样做吗?

4

1 回答 1

31

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

例如,您的 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 中创建一个具有该名称的服务,或者使用新创建的处理程序在你的 config.yml 中创建一个服务。

我最初在本教程之后发现了如何执行此操作:

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

于 2013-04-09T19:15:12.427 回答