Рубрики
Без рубрики

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

Как реализовать измеритель надежности пароля на стороне клиента и правила паролей на стороне сервера для простого приложения для регистрации Spring.

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы рассмотрим, как реализовать и показать правильные ограничения пароля во время регистрации . Такие вещи, как – пароль должен содержать специальный символ или он должен быть длиной не менее 8 символов.

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

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

Обратите внимание, как мы создаем здесь новое нарушение ограничений и отключаем также ограничение по умолчанию – в случае, если пароль недействителен.

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


	org.passay
	passay
	1.0

Для небольшой исторической информации, Пасси является потомком почтенной библиотеки vt-password Java.

4. Счетчик паролей JS

Теперь, когда на стороне сервера все готово, давайте взглянем на сторону клиента и реализуем простую Надежность пароля ” функциональность с помощью JavaScript.

Мы будем использовать простой плагин jQuery – Измеритель силы пароля jQuery для начальной загрузки Twitter – чтобы показать силу пароля в registration.html :




                  

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

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

Полную реализацию этого руководства можно найти в проекте github – это проект на основе Eclipse, поэтому его должно быть легко импортировать и запускать как есть.