Registro - Força e Regras da Senha

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[] 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 umPassword 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á.