Я пытаюсь создать страницу входа в систему, которая возвращает JWT в случае успешного входа в систему, но я не могу понять, как работают некоторые функции. В настоящее время я следую хорошему руководству по аутентификации JWT, в котором автор создает конечную точку «/ login», которая выглядит так:
@PostMapping("/login")
public String login(@RequestBody LoginUserDto loginUser) {
try{
authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(//email,//password));
}catch(BadCredentialsException exception) {....}
final UserDetails userDetails = userDetailsService.loadUserByUsername(//email);
return createToken(userDetails.getUsername());
}
Почему он все еще вызывает userDetailsService.loadUserByUsername()
, если метод authenticate()
не работает? t throw any BadCredentialsException
?
В любом случае, я видел, что этот userDetailsService
настроен внутри класса WebSecurityConfigurerAdapter
:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService)
.passwordEncoder(NoOpPasswordEncoder.getInstance());
}
Но опять же, какова цель это UserDetailsService
, если он использует AuthenticationManager
? Потому что почти в каждом учебнике я видел, что мне нужно реализовать этот интерфейс ...