FOSUserBundle密码验证

时间:2012-02-08 23:50:56

标签: symfony 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的默认最小长度验证正在取得所有权。

为了更清楚地说明我的问题,在FOSUserBundle中为密码设置MinLength以确保它在任何地方都得到验证的正确方法是什么?

此外,FOSUserBundle在ChangePassword中验证oldpassword != newpassword的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

validation.yml应该在覆盖FOS用户实体的同一个包中

您应该使用FOS而不是Acme,而您只需要一个验证集。

# 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

答案 1 :(得分:1)