Я использую Spring с Hibernate для взаимодействия с моей базой данных. Я использую JPA / Hibernate для проверки правильности ввода. Но похоже, что это не работает для паролей, и я думаю, это потому, что метод setPassword()
класса User
автоматически хеширует пароль. Вот некоторый код:
class User {
@Size(min = 12, max = 100)
private String password;
public User(..., String password) {
this.passwordSeed = this.passwordSeed = DigestUtils.sha256Hex(random.generateSeed(32));
this.password = DigestUtils.sha256Hex(password + this.passwordSeed);
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
if (passwordSeed == null) {
this.passwordSeed = DigestUtils.sha256Hex(random.generateSeed(32));
}
this.password = DigestUtils.sha256Hex(password + this.passwordSeed);
}
}
Обратите внимание, что я много урезал код, чтобы иметь возможность сосредоточиться на основной части. ...
в конструкторе - это мой способ сказать, что у него гораздо больше аргументов для установки других свойств, таких как firstName
и т. Д.
Таким образом, проблема в том, что ограничение @Size не выдает исключение, когда пользователь вводит, например, однобуквенный пароль. Например, @Size работает для firstName.
Я пытался добавить ограничение к переменной метода, но это тоже не работает. Как это:
class User {
private String password;
public User(..., @Size(min = 12, max = 100) String password) {
this.passwordSeed = this.passwordSeed = DigestUtils.sha256Hex(random.generateSeed(32));
this.password = DigestUtils.sha256Hex(password + this.passwordSeed);
}
public String getPassword() {
return password;
}
public void setPassword(@Size(min = 12, max = 100) String password) {
if (passwordSeed == null) {
this.passwordSeed = DigestUtils.sha256Hex(random.generateSeed(32));
}
this.password = DigestUtils.sha256Hex(password + this.passwordSeed);
}
}
Обратите внимание, что вне модели хеширование или манипулирование паролем не производится.
Так как мне правильно подойти к этому, чтобы иметь простую проверку, которая проверяет минимальную длину 12 символов и максимальную 100 символов?