2 回答
TA贡献1890条经验 获得超9个赞
简短回答:您正在使用新密码作为旧密码的哈希值。
说明:
我猜您将表单绑定到了您的用户类。 表单中的 password
字段已映射,这意味着它会更新您的用户财产。password
因此,由于该属性应包含“旧密码”的哈希但包含您的新密码,无法验证。
解决方案和改进:
最快的解决方案是 “取消映射” password
字段或删除 data_class
表单选项,并替换控制器中的一行:
// before: $newPassword = $user->getPassword(); $newPassword = $form->get('password')->getData();
我建议:
取消表单与您的用户类的绑定
对您的字段使用UserPassword验证约束
oldPassword
使用
$form->getData()
获取表单数据,而不是手动访问$request
TA贡献1946条经验 获得超4个赞
您将更改您的表单,因为如果您保留字段密码,则用户的密码也会被表单更改,所以正确的方法是:
- 在您的表格中:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('oldPassword', PasswordType::class, [
'mapped' => false,])
->add('newPassword',PasswordType::class, [
'mapped' => false,])
;
}
然后在你的控制器中更改获取新密码的方式
$oldPassword = $request->request->get('reset_pass')['oldPassword'];
$newPassword = $request->request->get('reset_pass')['newPassword'];
玩得开心 :)
- 2 回答
- 0 关注
- 122 浏览
添加回答
举报