Symfony 4.2:如何在控制器外获取编码器实例

时间:2019-05-13 08:40:40

标签: symfony

我需要在“登录”表单中检查密码,所以 我想在函数checkCredentials($credentials, UserInterface $user)中的Authenticator类(由bin / console make:auth制造)中获取Encoder。

$ credentials ['password']是纯文本,而$ user-> getPassword()是编码的密码。

我的security.yaml是:

encoders:
    App\Entity\User:
        algorithm: bcrypt
        cost: 12

如何获取编码器实例?

1 个答案:

答案 0 :(得分:2)

您可以从编码器工厂获得编码器,该编码器具有security.encoder_factory服务ID(如果使用自动装配,则为Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface接口)。

注入工厂后,您可以通过以下方式获取特定用户实体的编码器:

use App\Entity\User;

...

$encoder = $encoderFactory->getEncoder(User:class);