Registrierung - Passwortstärke und Regeln

Registrierung - Passwortstärke und Regeln

1. Überblick

In diesem kurzen Tutorial erfahren Sie, wie Sieproper password constraints during registration implementieren und anzeigen. Dinge wie - das Passwort sollte ein Sonderzeichen enthalten, oder es sollte mindestens 8 Zeichen lang sein.

Wir möchten leistungsfähige Kennwortregeln verwenden können, möchten diese Regeln jedoch nicht manuell implementieren. Wir werden also die reifenPassay library gut nutzen.

2. Benutzerdefinierte Kennwortbeschränkung

Zuerst erstellen wir eine benutzerdefinierte EinschränkungValidPassword:

@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 {};

}

Und benutze es inUserDto:

@ValidPassword
private String password;

3. Benutzerdefinierter Passwortvalidator

Verwenden Sie jetzt die Bibliothek, um einige leistungsstarke Kennwortregeln zu erstellen, ohne diese manuell implementieren zu müssen.

Wir erstellen den PasswortvalidatorPasswordConstraintValidator - und definieren die Regeln für das Passwort:

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;
    }
}

Beachten Sie, wiewe’re creating the new constraint violation here und deaktivieren Sie auch die Standardeinstellung - falls das Passwort nicht gültig ist.

Zum Schluss fügen wir noch die BibliothekPassayzu unserem pom hinzu:


    org.passay
    passay
    1.0

Passay ist der Nachkomme der Java-Bibliothek des ehrwürdigenvt-password.

4. JS Password Meter

Nachdem die Serverseite fertig ist, werfen wir einen Blick auf die Clientseite und implementieren ein einfachesPassword Strength” functionality mit JavaScript.

Wir verwenden ein einfaches jQuery-Plugin -jQuery Password Strength Meter for Twitter Bootstrap -, um die Kennwortstärke inregistration.html anzuzeigen:





5. Fazit

Und das war's - eine einfache, aber sehr nützliche Möglichkeit, die Stärke des Kennworts auf der Clientseite anzuzeigen und bestimmte Kennwortregeln auf der Serverseite durchzusetzen.

Diefull implementation dieses Tutorials finden Sie inthe github project - dies ist ein Eclipse-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.