Registro - Força e Regras da Senha
1. Visão geral
Neste tutorial rápido, veremos como implementar e mostrarproper password constraints during registration. Coisas como - a senha deve conter um caractere especial ou deve ter pelo menos 8 caracteres.
Queremos poder usar regras de senha poderosas - mas não queremos realmente implementar essas regras manualmente. Então, vamos fazer bom uso dePassay library maduro.
2. Restrição de senha personalizada
Primeiro - vamos criar uma restrição personalizadaValidPassword:
@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 {};
}
E use-o emUserDto:
@ValidPassword
private String password;
3. Validador de senha personalizado
Agora - vamos usar a biblioteca para criar algumas regras de senha poderosas sem ter que implementar manualmente nenhuma delas.
Criaremos o validador de senhaPasswordConstraintValidator - e definiremos as regras para a senha:
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;
}
}
Observe comowe’re creating the new constraint violation heree desabilite o padrão também - caso a senha não seja válida.
Finalmente, vamos adicionar a bibliotecaPassay em nosso pom:
org.passay
passay
1.0
Para um pouco de informação histórica, Passay é descendente da venerável biblioteca Javavt-password.
4. Medidor de senha JS
Agora que o lado do servidor está pronto, vamos dar uma olhada no lado do cliente e implementar um“Password Strength” functionality simples com JavaScript.
Usaremos um plugin jQuery simples -jQuery Password Strength Meter for Twitter Bootstrap - para mostrar a força da senha emregistration.html:
5. Conclusão
E é isso - uma maneira simples, mas muito útil de mostrar a força da senha no lado do cliente e aplicar certas regras de senha no lado do servidor.
Ofull implementation deste tutorial pode ser encontrado emthe github project - este é um projeto baseado em Eclipse, portanto, deve ser fácil de importar e executar como está.