我正在尝试覆盖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
的正确方法是什么?
答案 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)