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 extends Payload>[] 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 simple“Password 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.