У меня проблема с пользовательским средством проверки паролей, настроенным с помощью библиотеки 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 не используется, исключение не появляется.Я не могу выяснить, в чем причина проблемы с развернутым приложением, надеюсь, вы можете указать на это, спасибо.