Inscription - Mot de passe et règles

Enregistrement - Force du mot de passe et règles

1. Vue d'ensemble

Dans ce rapide tutoriel, nous verrons comment implémenter et afficherproper password constraints during registration. Le mot de passe doit contenir un caractère spécial ou au moins 8 caractères.

Nous voulons pouvoir utiliser des règles de mot de passe puissantes, mais nous ne voulons pas réellement mettre en œuvre ces règles manuellement. Donc, nous allons faire bon usage desPassay library matures.

2. Contrainte de mot de passe personnalisé

Tout d'abord, créons une contrainte personnaliséeValidPassword:

@Documented
@Constraint(validatedBy = PasswordConstraintValidator.class)
@Target({ TYPE, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
public @interface ValidPassword {

    String message() default "Invalid Password";

    Class[] groups() default {};

    Class[] payload() default {};

}

Et utilisez-le dans lesUserDto:

@ValidPassword
private String password;

3. Validateur de mot de passe personnalisé

Maintenant, utilisons la bibliothèque pour créer des règles de mot de passe puissantes sans avoir à les implémenter manuellement.

Nous allons créer le validateur de mot de passePasswordConstraintValidator - et nous définirons les règles pour le mot de passe:

public class PasswordConstraintValidator implements ConstraintValidator {

    @Override
    public void initialize(ValidPassword arg0) {
    }

    @Override
    public boolean isValid(String password, ConstraintValidatorContext context) {
        PasswordValidator validator = new PasswordValidator(Arrays.asList(
           new LengthRule(8, 30),
           new UppercaseCharacterRule(1),
           new DigitCharacterRule(1),
           new SpecialCharacterRule(1),
           new NumericalSequenceRule(3,false),
           new AlphabeticalSequenceRule(3,false),
           new QwertySequenceRule(3,false),
           new WhitespaceRule()));

        RuleResult result = validator.validate(new PasswordData(password));
        if (result.isValid()) {
            return true;
        }
        context.disableDefaultConstraintViolation();
        context.buildConstraintViolationWithTemplate(
          Joiner.on(",").join(validator.getMessages(result)))
          .addConstraintViolation();
        return false;
    }
}

Remarquez commentwe’re creating the new constraint violation here et désactivez également la valeur par défaut - au cas où le mot de passe n'est pas valide.

Enfin, ajoutons également la bibliothèquePassay dans notre pom:


    org.passay
    passay
    1.0

Pour un peu d'informations historiques, Passay est le descendant de la vénérable bibliothèque Javavt-password.

4. Compteur de mot de passe JS

Maintenant que le côté serveur est terminé, examinons le côté client et implémentons un simplePassword Strength” functionality avec JavaScript.

Nous allons utiliser un simple plugin jQuery -jQuery Password Strength Meter for Twitter Bootstrap - pour afficher la force du mot de passe enregistration.html:





5. Conclusion

Et c’est tout - un moyen simple mais très utile de montrer la force du mot de passe côté client et d’appliquer certaines règles de mot de passe côté serveur.

Lesfull implementation de ce didacticiel se trouvent dansthe github project - il s'agit d'un projet basé sur Eclipse, il devrait donc être facile à importer et à exécuter tel quel.