Я использую весеннюю загрузку с защитой в java. У меня есть Переопределить этот метод UserDetails lodUserByUsername(String email)
.
Я хочу, когда пользователь вводит неправильный адрес электронной почты и пароль, а затем предоставить ответ "Неверное имя пользователя и пароль"
, если их адрес электронной почты существует, и они введут неправильный пароль, то конкретный пользователь попытки увеличивается на единицу и сохраняется в таблице базы данных попыток столбцов.
если у этого пользователя превышен лимит более 3, чем я хочу получить ответ "Ваше имя пользователя заблокировано"
если этот пользователь сначала два или один попытается ввести неправильный пароль, то увеличится единственная попытка и отобразится ответ «Ваша попытка» + MIN_ATTEMPTS.
, если пользователь ввел первые два или одну попытку ввода неверный пароль, после того, как он сможет ввести правильное имя пользователя и пароль, этот конкретный пользователь попытается установить значение 0.
private static final int MAX_ATTEMPTS = 3;
int MIN_ATTEMPTS = 0;
@SneakyThrows
@Override
public UserDetails loadUserByUsername(String email) {
Members members = membersDao.findByEmail(email);
Set<GrantedAuthority> authorities = new HashSet<>();
if (members == null) {
throw new Exception("Invalid username and password");
} else {
MIN_ATTEMPTS = members.getAttempts();
MIN_ATTEMPTS++;
members.setAttempts(MIN_ATTEMPTS);
membersDao.save(members);
}
if (members.getAttempts() <= MAX_ATTEMPTS) {
APIResponseBuilder.build(true , commonMessages.loginSuccess);
return new User(members.getEmail(), members.getPassword(), authorities);
} else {
throw new Exception("You have exceed max +" + MAX_ATTEMPTS + "+limit of login");
}
}