2021년 12월 23일 기록

yshjft·2021년 12월 23일
0

하루 기록

목록 보기
4/16

session

  • session
    쿠키만을 이용하여 로그인을 진행하는 경우 보안적으로 문제(쿠키의 조작 가능성, 쿠키 탈취 가능성, 탈취된 쿠키 평생 이용 가능성)가 발생할 수 있다. 따라서 이를 보완하고자 session을 사용한다.

  • session 로직

  1. client 로그인 → server
    server는 로그인을 위해 전달된 정보를 통해 사용자를 확인하고 session ID와 value를 session 저장소에 저장한다.

    • session ID
      추정이 불가능한 값이다. UUID라고 생각하면 된다.
    • value
      사용자 정보가 담긴 객체를 저장할 수도 있지만 세션은 메모리에 저장되기 때문에 최소한의 정보(사용자 ID)만을 저장해야 한다.
  2. server → client
    사용자를 확인하고 세션을 세션 저장소에 저장하면 server는 set-cookie 헤더에 session ID를 설정하여 응답을 보낸다.(쿠키 전달)

  3. client → server
    쿠키를 받은 후 client(브라우저)는 요청을 보낼 때 마다 cookie 헤더를 이용하여 서버로 이전에 저장했던 모든 쿠키(session ID)들을 함께 전송합니다.

  • HttpSession
// true가 default이다

// 세션이 있는 경우 해당 세션 객체를 return 하고 없을 경우 session을 생성한다.
HttpSession session = request.getSession(); 
HttpSession session = request.getSession(true);

// 세션이 있는 경우 해당 세션 객체를 return 하고 없을 경우 null을 return 한다.
HttpSession session = request.getSession(false);

// ex. 로그인 회원 정보를 저장한다
session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);
  • 주의!
    Session ID와 key의 역할을 계속 이해하지 못해 아래와 같이 그림으로 정리한다. session ID를 통해 session 객체 접근하고 key를 이용하여 저장된 value에 접근하는 것이다.

Optional

  • .of(value)
    null이 아닌 객체를 담고 있는 Optional 객체를 생성한다.

  • .empty()
    null인 객체를 담는 Optional 객체를 생성한다.

  • .ofNullable(value)
    null인지 아닌지 알 수 없는 객체를 담는 Optional 객체를 생성한다.

  • .orElse(v)
    null이면 v를 반환한다.

  • .orElseGet(func())
    null이면 func()의 반환값을 반환한다.

  • .orElse(func()) VS .orElseGet(func())
    .orElse는 null이 아니여도 func()을 수행하지만 .orElseGet은 null인 경우에만 func()을 수행한다.

profile
꾸준히 나아가자 🐢

0개의 댓글