两次输入的密码是否一致如何验证?

两次输入的密码是否一致如何验证?


以下是Spring Boot中验证两次输入的密码是否一致的方法:


首先,在用户注册表单中添加两个密码输入框,分别为password和confirmPassword。


在User类中添加一个成员变量confirmPassword,并添加相应的getter和setter方法。


在User类中使用@NotBlank和@Size注解对password和confirmPassword进行验证。


创建一个名为PasswordMatchesValidator的类,实现ConstraintValidator


在User类中使用@PasswordMatches注解对password和confirmPassword进行验证。



以下是使用自定义注解实现Spring Boot中两次输入的密码是否一致验证的例子:


1.定义自定义注解PassValid


@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PassValidator.class)
@Documented
public @interface PassValid {
    // 报错信息
    String message() default "confirmPassword:两次输入密码需一致";
    Class[] groups() default {};
    Class[] payload() default {};
    // 密码字段
    String password();
    // 确认密码字段
    String password_confirm();
}


2.定义验证器PassValidator

public class PassValidator implements ConstraintValidator {
    private String password;
    private String password_confirm;

    @Override
    public void initialize(PassValid constraintAnnotation) {
        password = constraintAnnotation.password();
        password_confirm = constraintAnnotation.password_confirm();
    }

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext context) {
        try {
            BeanWrapperImpl beanWrapper = new BeanWrapperImpl(value);
            String passwordValue = (String) beanWrapper.getPropertyValue(password);
            String passwordConfirmValue = (String) beanWrapper.getPropertyValue(password_confirm);
            return passwordValue.equals(passwordConfirmValue);
        } catch (Exception e) {
            return false;
        }
    }
}


3.在需要验证的实体类上使用自定义注解PassValid

@Data
@PassValid(password = "password", password_confirm = "password_confirm")
public class User {
    private String username;
    private String password;
    private String password_confirm;
}


4.在Controller中使用@Valid注解进行验证

@Data
@PassValid(password = "password", password_confirm = "password_confirm")
public class User {
    private String username;
    private String password;
    private String password_confirm;
}













关键词 :  验证,密码验证