Регистрация - Надежность пароля и правила

Регистрация - Надежность пароля и правила

1. обзор

В этом кратком руководстве мы рассмотрим, как реализовать и показатьproper password constraints during registration. Такие вещи, как - пароль должен содержать специальный символ, или он должен быть не менее 8 символов.

Мы хотим иметь возможность использовать мощные правила паролей, но не хотим вводить эти правила вручную. Итак, мы собираемся эффективно использовать зрелыеPassay library.

2. Пользовательское ограничение пароля

Во-первых, давайте создадим собственное ограничениеValidPassword:

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

}

И используйте его вUserDto:

@ValidPassword
private String password;

3. Пользовательский валидатор пароля

А теперь давайте воспользуемся библиотекой для создания некоторых мощных правил паролей без необходимости вручную реализовывать какие-либо из них.

Мы создадим валидатор пароляPasswordConstraintValidator - и определим правила для пароля:

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

Обратите внимание наwe’re creating the new constraint violation here и отключение пароля по умолчанию - в случае, если пароль недействителен.

Наконец, давайте также добавим библиотекуPassay в наш pom:


    org.passay
    passay
    1.0

Немного исторической информации: Passay является потомком почтенной библиотеки Javavt-password.

4. JS Password Meter

Теперь, когда серверная часть готова, давайте взглянем на клиентскую сторону и реализуем простойPassword Strength” functionality с помощью JavaScript.

Мы воспользуемся простым плагином jQuery -jQuery Password Strength Meter for Twitter Bootstrap - чтобы показать надежность пароля вregistration.html:





5. Заключение

Вот и все - простой, но очень полезный способ показать надежность пароля на стороне клиента и обеспечить соблюдение определенных правил паролей на стороне сервера.

full implementation этого руководства можно найти вthe github project - это проект на основе Eclipse, поэтому его должно быть легко импортировать и запускать как есть.