Endpoint do logowania (uwierzytelnianie, Spring Security)

0

Próbuje napisać endpoint /login do logowania usera (używam Spring Security). Po zalogowaniu user miałby dostęp do zmiany swojego hasła itp. Tylko problem w tym, że przy próbie użycia np. wspomnianego już endpoint do zmiany hasła dostaje błąd o braku autoryzacji.

AKTUALIZACJA
Usunąłem ten niepotrzebny custom authentication provider i .httpBasic().
Endpoint do logowania wygląda teraz tak:

@PostMapping("/login")
  void login(@RequestBody LoginDTO dto) {
  }

Czy muszę pisać te wszystkie filtry i handlery tak jak w tym filmiku? Dlaczego Spring tego sam nie ogarnia skoro ma już definiowane filtry takie jak UsernamePasswordAuthenticationFilter itd?

1

Zacznijmy od tego, że używasz basic auth .httpBasic(), które polega na tym, że każdy request jest autoryzowany poprzez przesyłanie loginu i hasła w nagłówku Authorization. W takiej formie autoryzacji nie ma miejsca na jakieś endpointy typu /login.
Następnie, takich rzeczy jak endpoint logowania nie robi się ręcznie! Spring to załatwia przez odpowiednią konfigurację.
Ty chcesz tu pewnie jakiś form login, a nie basic. I ten authenticationProvider wątpię żeby był potrzebny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1