gpt4 book ai didi

Symfony2,FOSUser,重置密码后不登录用户

转载 作者:行者123 更新时间:2023-12-02 14:32:11 25 4
gpt4 key购买 nike

我正在使用 FosUser 重置密码系统,但我不知道如何在用户更改密码后删除自动登录?

感谢帮助,我不想覆盖,我直接更改FOS文件。

最佳答案

正确的方法:)

Symfony 中的编译器 channel 允许您操作其他服务。在这种情况下,您希望覆盖 fos_user.listener.authentication 来使用自定义订阅者,而不是 FOSUserBundle FOS\UserBundle\EventListener\AuthenticationListener 提供的订阅者。您可以扩展提供的事件以仅订阅注册事件而不订阅重置密码事件:

<?php
// src/YourCompany/YourBundle/EventListener/AuthenticationListener.php

namespace YourCompany\YourBundle\EventListener;

use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\EventListener\AuthenticationListener as FOSAuthenticationListener;

class AuthenticationListener extends FOSAuthenticationListener
{

public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_COMPLETED => 'authenticate',
FOSUserEvents::REGISTRATION_CONFIRMED => 'authenticate'
);
}

}

为此,只需定义一个编译器通行证,如下所示:

<?php
// src/YourCompany/YourBundle/DependencyInjection/Compiler/FOSUserOverridePass.php

namespace YourCompany\YourBundle\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class FOSUserOverridePass implements CompilerPassInterface
{

public function process(ContainerBuilder $container)
{
$container->getDefinition('fos_user.listener.authentication')->setClass('YourCompany\YourBundle\EventListener\AuthenticationListener');
}

}

然后在包定义中注册您的编译器传递:

<?php
// src/YourCompany/YourBundle/YourCompanyYourBundle.php

namespace YourCompany\YourBundle;

use YourCompany\YourBundle\Compiler\FOSUserOverridePass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class YourCompanyYourBundle extends Bundle
{

public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new FOSUserOverridePass());
}

}

就是这样!

<小时/>

这里有一些值得阅读的内容:http://symfony.com/doc/current/cookbook/service_container/compiler_passes.html

您要覆盖的服务:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/config/listeners.xml

原来的类:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/EventListener/AuthenticationListener.php

关于Symfony2,FOSUser,重置密码后不登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com