我现在正在搜索一段时间,以获取有关如何在symfony2中验证成功后执行某些操作的信息。我想在使用旧哈希成功验证后立即重新使用用户密码来使用bcrypt。当我仍然有有效的普通密码时,我需要这样做,所以它应该在凭证检查之后和重定向之前。
任何线索如何实现?
我在Symfony中发现了一些关于事件调度程序的内容,但是我在成功验证后无法找到是否有任何事件。
如果我试图以错误的方式做这件事并提出一些更好的方法,请纠正我。
// 修改
好的,我发现事件在auth成功之后被触发,它被称为security.authentication.success
。所以我现在可以附加到这个事件,但现在我不知道我的边界代码应该在哪里附加我的事件监听器?我应该使用/src/Pkr/BlogUserBundle/DependencyInjection/PkrBlogUserExtension.php
方法load()
进行此操作吗?
答案 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/