【发布时间】:2019-08-23 07:56:48
【问题描述】:
我有一个用于登录管理员页面的 Admin 类,它实现了UserInterface:
**
* @ORM\Entity(repositoryClass="App\Repository\AdminRepository")
*/
class Admin implements UserInterface
{
...
}
security.yaml中作为用户提供者的实体:
security:
providers:
app_user_provider:
entity:
class: App\Entity\Admin
property: username
此管理员提供程序用于在不使用 FOSUserBundle 的情况下登录 SonataAdmin 页面
我创建了一个AdminAdmin 类,用于在 SonataAdmin 中更新/创建管理员用户:
final class AdminAdmin extends AbstractAdmin
{
}
但是在 SonataAdmin 中没有关于如何更新用户密码的教程,所以我决定更改 Admin 实体中的setPassword:
/**
* @ORM\Entity(repositoryClass="App\Repository\AdminRepository")
*/
class Admin implements UserInterface
{
public function __construct(UserPasswordEncoderInterface $passwordEncoder)
{
$this->passwordEncoder = $passwordEncoder;
}
public function setPassword(string $password): self
{
dd($this->passwordEncoder);
$this->password = $this->passwordEncoder->encodePassword($this, $password);
return $this;
}
}
如上所示,我尝试使用 UserPasswordEncoderInterface 来编码密码,但问题是passwordEncoder 为空,无法将 UserPasswordEncoderInterface 服务注入到 Admin 实体。
那么用 SonataAdmin 更新用户密码的正确方法是什么
【问题讨论】:
-
现在遇到同样的问题,希望您能找到解决办法。
-
请检查新答案
标签: symfony sonata-admin