老用户更改密码验证规则后无法登录

Old users can't login after changing password validation rule

我正在使用 symfony 2 为我的公司构建一个网络平台。最近,我通过添加以下代码更改了用户实体中的验证规则:

/**
* @Assert\Regex(
*     pattern="/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,127}$/",
*     message="edit.personnal_info.udpate.message.password_info_regex",
*     groups={"registration"}
* )
*/
protected $plainPassword;

此更改后,我所有的旧创建用户都无法再登录。只有新用户,密码有效才能连接。

我不想更改所有旧密码。所以,如果有一种方法可以在登录时跳过验证规则,那就可以了。

Ps:我正在使用 FOSUserBundle。

解决方案,如果您的问题是老用户使用较短的密码并且您希望在下次密码更改之前支持它们

您可以将其添加到您的注册和更改密码表单中,而不是将此约束添加到实体中

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('plainPassword', PasswordType::class, [
            'constraints' => [
                new Regex([
                    'pattern' => '/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,127}$/'
                ]),
                new NotBlank()
            ]
        ]);
}

这样您就可以在不破坏老用户逻辑的情况下为新用户强制执行新密码策略。