symfony - Symfony 4.2:如何在控制器之外获取编码器实例
问题描述
我需要在登录表单中检查我的密码,所以我想在函数中获取类 Authenticator 中的编码器(由 bin/console make:auth 制作)checkCredentials($credentials, UserInterface $user)
。
$credentials['password'] 是纯文本,$user->getPassword() 是编码密码。
我的 security.yaml 是:
encoders:
App\Entity\User:
algorithm: bcrypt
cost: 12
如何获取编码器的实例?
解决方案
您可以从具有security.encoder_factory
服务 ID(或Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface
使用自动装配的接口)的编码器工厂获取编码器。
注入工厂后,您可以通过以下方式获取特定用户实体的编码器:
use App\Entity\User;
...
$encoder = $encoderFactory->getEncoder(User:class);
推荐阅读
- github - 如何通过仅链接选项共享 Github 页面?
- c++ - 使用 libhttpserver 搭建 https 服务器
- json - 当 responseType 是带有 VueJs 的 Axios 中的 blob 时,如何读取 http 错误?
- php - 如何避免 forech 循环以及我们如何使用数组列
- python-3.x - 如何将分隔符附加到刮掉的桌子上?
- c# - 如何从 2 个不同的字符串中获取字典中的值
- javascript - 如何计算摩纳哥差异编辑器中更改的行数?
- angular - 为什么http客户端请求返回错误作为字符串而不是HttpErrorResponse?
- laravel - 如何在 eloquent 中定义逆多态多对可能关系?
- python-3.x - 尝试通过 Web 套接字连接,它总是得到 HTTP/1.1 405 Method Not Allowed 错误