HTTP의 stateless란?
Stateless(무상태)는 서버가 클라이언트의 상태 정보를 저장하지 않는 것을 의미하고
각 요청은 독립적이며 이전 요청의 상태나 정보는 기억하지 않는다.
HTTP의 stateless 상황 예시
- 첫 번째 요청 - 카페에서 주문
내가(클라이언트) 카페에 가서 커피를 주문한다. 직원(서버)에게 "아이스 아메리카노 주세요"라고 말하고 직원은 그 주문을 처리한 후 커피를 준다. 그리고 바로 이때!!! 직원(서버)은 내가(클라이언트) 무엇을 주문했는지, 어떤 음료를 받았는지 더 이상 기억하지 않는다. 즉, 주문이 완료된 후 직원(서버)은 나(클라이언트)에 대한 정보를 더 이상 갖고 있지 않는다. - 두 번째 요청 - 다시 카페에서 요청
커피를 받은 후 나는(클라이언트) 추가로 시럽 추가 요청하려고 다시 카운터에 간다. 그런데 직원(서버)은 내가(클라이언트) 이전에 아이스 아메리카노를 주문했던 사람인지 기억하지 않기 때문에 "아까 아이스 아메리카노 주문한 사람이에요~~~ 시럽 추가 해주세요"라고 다시 설명해야 한다. 직원(서버)은 매번 새로운 사람이라고 생각하고, 나의 상태(이전에 무엇을 주문했는지)를 기억하지 않는다.
JWT의 stateless란?
HTTP의 독립성을 극복하기 위해서 JWT(사용자 정보 카드)를 사용한다. 서버는 별도로 세션 정보를 저장할 필요가 없고 요청이 올 때마다 JWT를 검증하여 사용자의 신원을 확인할 수 있다.
로그인 시 유저의 로그인 여부를 어떻게 판단하는가?
JWT를 사용하는 경우, 로그인 여부는 클라이언트가 매 요청에 JWT가 있으면 로그인 상태로 간주한다.
JWT 사용시 유저의 정보를 스프링 서버에서 어디서 어떻게 가져오는가?
클라이언트는 JWT를 포함하여 서버에 요청을 하고 그런 다음 요청이 들어올 때마다 JWT가 포함되어 있는지 필터를 통해 확인하고 검증을한다.
결론
JWT는 서버가 상태를 유지하지 않고도 사용자 인증 정보를 안전하게 전달과 검증할 수 있도록 도와주는 방식!!!
'Spring' 카테고리의 다른 글
JWT + Filter + ArgumentResolver 동작 흐름 (0) | 2025.02.11 |
---|---|
3 Layer Architecture (0) | 2025.02.03 |
컨트롤러 만들어서 URL 매핑 (0) | 2024.08.30 |
ORM이란? (0) | 2024.08.28 |
@Controller (0) | 2024.08.27 |