我现在正在搜索一段时间,以获取有关在 symfony2 中身份验证成功后如何做的任何信息。我想在使用旧哈希成功进行身份验证后重新哈希用户密码以使用 bcrypt。当我仍然拥有有效的普通密码时,我需要这样做,所以它应该在凭据检查之后和重定向之前。
任何线索如何实现这一目标?
我在 Symfony 中找到了一些关于事件调度器的信息,但在成功验证后我找不到是否有任何事件。
如果我试图以错误的方式做这件事并建议一些更好的方法,请纠正我。
// 编辑
好的,我发现在身份验证成功后立即触发了事件,它称为 security.authentication.success
。所以我现在可以附加到这个事件,但现在我不确定我应该在我的边界代码中的哪个位置附加我的事件监听器?我应该在 /src/Pkr/BlogUserBundle/DependencyInjection/PkrBlogUserExtension.php
中的 load()
方法中这样做吗?
最佳答案
您可以指定在成功登录时执行的登录成功处理程序。
例如,您的 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/
关于events - 在 symfony2 登录成功之后和重定向之前做些什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15908856/