我需要在“登录”表单中检查密码,所以
我想在函数checkCredentials($credentials, UserInterface $user)
中的Authenticator类(由bin / console make:auth制造)中获取Encoder。
$ credentials ['password']是纯文本,而$ user-> getPassword()是编码的密码。
我的security.yaml是:
encoders:
App\Entity\User:
algorithm: bcrypt
cost: 12
如何获取编码器实例?
答案 0 :(得分:2)
您可以从编码器工厂获得编码器,该编码器具有security.encoder_factory
服务ID(如果使用自动装配,则为Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface
接口)。
注入工厂后,您可以通过以下方式获取特定用户实体的编码器:
use App\Entity\User;
...
$encoder = $encoderFactory->getEncoder(User:class);