#spring-boot #authentication #spring-security
Вопрос:
Я пытаюсь внедрить пользовательскую аутентификацию в свою службу при загрузке Spring 2.5.
Прямо сейчас у меня есть типичный весенний вход в систему безопасности с использованием фильтра проверки подлинности имени пользователя.
Что мне нужно реализовать/переопределить, чтобы войти в учетную запись с двумя паролями? Я имею в виду основной пароль и временный пароль, назначенный пользователю в случае забывания (отправленный по почте)?
примечание: срок действия временного пароля истекает
Комментарии:
1. @Toerktumlare таковы бизнес-требования. Я уже реализовал это с помощью spring security. Я опубликую свое решение для этого в свободное время
Ответ №1:
Я реализовал это с помощью spring security.
Все, что тебе нужно сделать, это:
- Создайте учетные записи пользователей, в которых у вас будет пароль, дата истечения срока действия и другая информация, такая как идентификатор пользователя или адрес электронной почты (вы можете сохранить здесь то, что требуется для вашего проекта).
- Создайте таблицу с временным паролем, датой истечения срока действия и идентификатором пользователя
- Добавьте функцию, которая назначает временный пароль учетной записи, когда пользователь запрашивает это.
- Создайте временный пароль интерфейса
- Создайте службу TemporaryPasswordUserDetailsService, реализующую службу UserDetailsService, и найдите пользователя в разделе TemporaryPasswordRepository в переопределенном методе:
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
- Добавьте в метод impemented UserDetailsService в свой класс конфигурации безопасности:
protected void configure(AuthenticationManagerBuilder auth) {
authenticationManagerBuilder
.userDetailsService(your basic user datails service)
.passwordEncoder(passwordEncoder());
authenticationManagerBuilder
.userDetailsService(TemporaryPasswordUserDetailsService)
.passwordEncoder(passwordEncoder());
}
Поскольку spring авторизует пользователя, когда по крайней мере один из UserDatailsService соответствует паролю, теперь вы можете войти в систему с 2 паролями.
Примечание: Вы также должны реализовать, например, cron, который удалит пароли с истекшим сроком действия из базы данных.