Mam 2 endpointy, jeden /sgin-in do logowania i drugi /sign-out to wylogowywania. Zastanawiam się, jak to sensownie zaimplementować w Spring Security od strony serwisów. Wiadomo, muszę mieć jakiś AuthService z tymi metodami, ale co powinno się w nich znajdować? Nie pytam o oczywiste rzeczy takie jak sprawdzanie czy dane z dto zgadzają się z tymi z bazy tylko o to co potem. Wiem, że tworzy się UsernamePasswordAuthenticationToken, tylko gdzie go potem przekazać, żeby user został zalogowany a potem wylogowany?
Pseudo kod do momentu gdzie wiem co robić mniej więcej:
void signIn(LoginDto dto) {
var user = getUserOrThrow(dto.username())
if (!user.password().equal(dto.password() ) ) {
throw new AuthException(dto.password())
}
new UsernamePasswordAuthenticationToken(dto.username(), dto.password())
...
//Nie wiem co dalej.
}
void signOut() {
//Skądś trzeba wziąć zalogowane usera, tylko skąd (SecurityContextHolder?) i co dalej?
}
Sampeteq