Добрый день.
У меня есть требование для реализации OAuth2 с использованием Spring-Security с использованием Springboot2 на основе приведенного ниже URL.
Имя URL:
https://www.devglan.com/spring-security/spring-boot-oauth2-jwt-example
И я это сделал.
Здесь я получил другое требование для кода выше при аутентификации пользователя.
Мне нужно передать companyId вместе с userName и паролем и grant_type (пароль) на вкладке x-www-form-urlencoded в инструменте почтальона.
И я должен выбрать пользователя на основе имени пользователя и companyId.
Поэтому, пожалуйста, помогите мне, какие изменения мне нужно сделать в приведенном выше коде ссылки, чтобы я мог выполнить свое требование.
Здесь я получаю только электронную почту. Мне нужен адрес электронной почты вместе с идентификатором компании.
@Override
@Transactional
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
User user = userRepository.findByEmail(email).orElseThrow(
() -> new UsernameNotFoundException("User Not Found with -> username or email : " + email));
return UserPrinciple.build(user);
}
Expected:
@Override
@Transactional
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
User user = userRepository.findByEmailAndCompanyId(email,companyId).orElseThrow(
() -> new UsernameNotFoundException("User Not Found with -> username or email : " + email));
return UserPrinciple.build(user);
}
В настоящее время с именем пользователя и паролем все работает нормально.
Но в моей системе один и тот же пользователь сопоставлен с разными компаниями. Если один и тот же пользователь сопоставлен с несколькими компаниями, я обнаружил ошибку, как показано ниже.
{
«ошибка»: «несанкционированный»,
«error_description»: «запрос не вернул уникальный результат: 2; вложенное исключение - javax.persistence.NonUniqueResultException: запрос не вернул уникальный результат: 2»
}
Мне нужно выбрать пользователя, основываясь на имени пользователя, пароле и companyId, что приведет к одному пользователю.
Может ли кто-нибудь помочь по этому вопросу. Заранее большое спасибо.