24.09.30

윤지현·2024년 10월 1일

TIL

목록 보기
70/75

01. 인증/인가

JWT에 userI와 email을 넣었는데 어떻게 꺼낼까?

먼저! 그 전에 JWT와 Filter에 대해서 알아보자!


JWT와 Session

JWT에 대하여 말하기 전에 Http의 stateless와 connectionless에 대하여 이야기를 해보자

  • HTTP의 stateless? conntectionless?
    stateless → 상태가 없는
    conntectionless → 비연결성의
    이는 다시 말하자면, HTTP의 요청들은 서로 독립적이라는 뜻!

로그인이 되어있다는 것은 분명 상태(데이터)를 가지고 있다는 뜻
유저 데이터를 갖고 있어야만 로그인이 유지가 될테니까요!

즉, 클라이언트(유저)나 서버 둘 중 하나는 데이터를 갖고 있어야한다는 뜻

💡 클라이언트와 서버 둘 다 상태(데이터)를 갖고 있을 수 있다.
1. 클라이언트에서 상태를 관리할 때 쓰는 방식을 JWT
2. 서버에서 상태를 관리할 때 쓰는 방식을 Session

즉, 로그인 상태일 때

  • JWT클라이언트에서는 JWT(유저정보)를 갖고 있고 이를 HTTP 요청마다 같이 보내서 항상 자신이 누구인지를 알려서 HTTP 요청들 간의 독립성을 극복
    ex) : 매번 식당을 갈 때마다 '나는 OOO입니다!'라고 정보를 알려주는 것
  • Session서버에서는 서버에 Session(유저정보)를 갖고 있고, 클라이언트는 Session Key(랜덤하고 무의미한 값)를 갖고 이를 HTTP 요청마다 같이 보내서 HTTP 요청들 간의 독립성을 극복하는 것
    ex) : 식당을 갈 때 받은 암호를 알려주는 것

로그아웃은 어떻게 하는지

  1. JWT 일 때 로그아웃 하는 방법?
    1. 클라이언트에서 JWT를 삭제한다.

  1. Session 일 때 로그아웃 하는 방법?
    1. 클라이언트에서 session key를 삭제한다.
      1. 서버에서 session 데이터를 삭제한다.

  • Q. JWT의 특징을 한 단어로 말해보면?
    A. (서버 기준) stateless
  • Q. Session의 특징을 한 단어로 말해보면?
    A. (서버 기준) stateful

Filter

💡 스프링에 있는 하나의 도구일 뿐

Client의 요청이 왔을 때 서버의 가장 앞에서 요청을 Filtering하는 용도로 쓰는 것

profile
첫 시작

0개의 댓글