Пользовательский валидатор паролей с библиотекой passay - неожиданное исключение при работе с развернутым приложением - PullRequest
0 голосов
/ 25 апреля 2019

У меня проблема с пользовательским средством проверки паролей, настроенным с помощью библиотеки passay в моем приложении для весенней загрузки, когда оно развернуто на herroku.Проблема не возникает при запуске приложения на локальном хосте, процесс регистрации идет хорошо (настраиваемый валидатор паролей также работает без каких-либо проблем).

POM:

<dependency>
    <groupId>org.passay</groupId>
    <artifactId>passay</artifactId>
    <version>1.5.0</version>
</dependency>

PasswordConstraintValidator:

public class PasswordConstraintValidator implements ConstraintValidator<ValidPassword, String> {

private DictionaryRule dictionaryRule;

@Override
public void initialize(ValidPassword constraintAnnotation) {
    try {
        String invalidPasswordList = this.getClass().getResource("/static/invalid-password-list.txt").getFile();
        dictionaryRule = new DictionaryRule(
                new WordListDictionary(WordLists.createFromReader(
                        new FileReader[]{
                                new FileReader(invalidPasswordList)
                        },
                        false,
                        new ArraysSort()
                )));
    } catch (IOException e) {
        dictionaryRule = null;
    }
}

@Override
public boolean isValid(String password, ConstraintValidatorContext context) {
    PasswordValidator validator = new PasswordValidator(Arrays.asList(

            new LengthRule(8, 30),
            new CharacterRule(EnglishCharacterData.UpperCase, 1),
            new CharacterRule(EnglishCharacterData.LowerCase, 1),
            new CharacterRule(EnglishCharacterData.Digit, 1),
            new CharacterRule(EnglishCharacterData.Special, 1),
            new WhitespaceRule(),
            dictionaryRule
    ));

    RuleResult result = validator.validate(new PasswordData(password));

    if (result.isValid()) {
        return true;
    }

    List<String> messages = validator.getMessages(result);
    String messageTemplate = messages.stream().collect(Collectors.joining(","));
    context.buildConstraintViolationWithTemplate(messageTemplate)
            .addConstraintViolation()
            .disableDefaultConstraintViolation();
    return false;
}
}

Неожиданное исключение:

There was an unexpected error (type=Internal Server Error, status=500).
HV000028: Unexpected exception during isValid call.

Я обнаружил, что, когда dictionaryRule не используется, исключение не появляется.Я не могу выяснить, в чем причина проблемы с развернутым приложением, надеюсь, вы можете указать на это, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...