Проверка пароля FOSUserBundle

Я пытаюсь переопределить текущую проверку паролей в FOSUserBundle. Перепробовал несколько вариантов, но решения так и не нашел.

Чтобы увеличить MinLength пароля, я создал validation.yml с помощью:

# src/Acme/UserBundle/Resources/config/validation.yml
Acme\UserBundle\Entity\User:
    properties:
        username:
            - MinLength: { limit: 3, message: "Your username must have at least {{ limit }} characters." }
            - MaxLength: { limit: 255, message: "The username is too long" }
            - NotBlank: { message: "Please enter a username"}       

        plainPassword:
            - NotBlank: { message: "Please enter a password"}
            - MinLength: { limit: 8, message: "Your password must have at least {{ limit }} characters.", groups [Registration,Profile]}
                - MaxLength: { limit: 255, message: "The password is too long" }

Acme\UserBundle\Form\Model\ChangePassword:
  properties:  
      new:
          - NotBlank: { message: "Please enter a new password", groups [ChangePassword]}
          - MinLength: { limit: 8, message: "Your password must have at least {{ limit }} characters.", groups [ChangePassword]}
          - MaxLength: { limit: 255, message: "The password is too long", groups [ChangePassword]}  

Acme\UserBundle\Form\Model\ResetPassword:
        new:
            - NotBlank: { message: "Please enter a new password", groups [ResetPassword]}
            - MinLength: { limit: 8, message: "Your new password must have at least {{ limit }} characters.", groups [ResetPassword]}
            - MaxLength: { limit: 255, message: "The new password is too long", groups [ResetPassword]}

Это отлично работает для меня на /register, но на /change-password проверка минимальной длины по умолчанию из FOSUserBundle становится владельцем.

Чтобы более четко сформулировать мой вопрос, как правильно установить MinLength для пароля в FOSUserBundle, чтобы обеспечить его проверку везде?

Кроме того, как правильно использовать FOSUserBundle для проверки в ChangePassword того, что oldpassword != newpassword?


person MadManMonty    schedule 08.02.2012    source источник


Ответы (2)


validation.yml должен находиться в том же пакете, который перезаписывает пользовательский объект FOS.

Вместо Acme вы должны использовать FOS, и вам нужен только один набор проверки.

# src/Acme/UserBundle/Resources/config/validation.yml
FOS\UserBundle\Model\User:
   properties:
      username:
        - MinLength: { limit: 3, message: "Your username must have at least {{ limit }} characters." }
        - MaxLength: { limit: 255, message: "The username is too long" }
        - NotBlank: { message: "Please enter a username"}       

      plainPassword:
        - NotBlank: { message: "Please enter a password", groups:[Registration, ResetPassword, ChangePassword] }
        - MinLength: { limit: 8, message: "Your password must have at least {{ limit }} characters.", groups:[Registration, ResetPassword, ChangePassword] }
        - MaxLength: { limit: 255, message: "The password is too long", groups:[Registration, ResetPassword, ChangePassword] }

В случае возникновения проблем обратитесь к источнику: https://github.com/FriendsOfSymfony/FOSUserBundle/issues/987

person pfisher    schedule 18.09.2013
comment
это не кажется правильным синтаксисом для проверки длины на основе этого symfony.com/ doc/current/reference/constraints/Length.html - person gondo; 30.01.2014
comment
Этот синтаксис использовался в symfony 2, но в любом случае, даже с новым синтаксисом, я не могу переопределить проверку минимальной длины таким образом. Я могу только добавить новые правила проверки. - person Daniel; 16.01.2019

Вы можете использовать группы проверки

http://symfony.com/doc/2.0/book/validation.html#validation-groups

person anthofremion    schedule 09.02.2012
comment
Это то, что я удалил, чтобы увидеть, не было ли это причиной моих проблем. Я вставил их обратно сейчас, чтобы проверить, они, кажется, не имеют никакого значения. Я отредактирую выше, чтобы включить их обратно для ясности. - person MadManMonty; 09.02.2012