Регистрация - Надежность пароля и правила
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 extends Payload>[] 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, поэтому его должно быть легко импортировать и запускать как есть.