Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 스파르타 코딩클럽 #내배캠 #최종프로젝트 #로그인 #인증인가 #jwt? #토큰인증 #액세스토큰 #리프레시토큰 #쿠키 #파싱 #서명키의 중요성 #security context holder
- 프로세스 #CPU #시공유 #커널
- ci/cd파이프라인
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #소셜로그인 #네이버 #기능구현 #vue.js #spring boot #네이버로그인 #연동하기
- spring security #jwt 토큰 #json web token #token #직렬화 #인증
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #get방식 #post방식 #http프로토콜 #클라이언트 #백엔드 #api
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 스파르타 코딩클럽 #내배캠 #최종프로젝트 #4개월삭제 #국비지원 #자바
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #ci #ioc #의존성
- 스파르타 코딩클럽 #인메모리db #h2 #연동이슈 #문제해결 #방법 #spring security #header #
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #aop #관점지향프로그래밍 #유지보수
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #최종프로젝트 #aws s3 #프로필 이미지 수정 #자동삭제
- 챌린저스 #bod
- 쓰레드 #쓰레드풀 #프로세스
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #tdd #테스트 주도개발 #테스트코드 #유닛테스트
- 비트 #바이트 #이진수
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- 스프링 #백엔드 #자바
- java5기
- 보안 #이슈
- 인가 #
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #springmvc패턴 #model #view #controller
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #트랜잭션전파 #transaction
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #ci #cd
- 스파르타 코딩클럽 #내배캠 #모의면접 #예상질문 #http 메서드 종류 #메서드 #post #put #get #patch #대용량트래픽 #처리방법 #캐싱 #코드최적화 #db최적화 #트래픽 #로드밸런서
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
Archives
- Today
- Total
요리사에서 IT개발자로
스파르타 부트캠프 Spring Master 3강 쿠키와 세션이란 본문
쿠키란
클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일이다.
구성요소
- Name(이름) : 쿠키를 구별할 때 사용되는 키( 중복x)
- Value(값) : 쿠키의 값
- Domain(도메인): 쿠키가 저장된 도메인
- Path(경로) : 쿠키가 사용되는 경로
- Expires(만료기한 ) : 쿠키의 만료기한(만료기한 지나면 삭제된다)
세션이란
서버에서 일정시간 동안 클라이언트 상태를 유지하기위해 사용된다.
서버에서 클라이언트 별 유일무이한 세션 ID를 부여하고
클라이언트 별로 필요한 정보를 서버에 저장한다.
서버에서 생성한 세션ID는
클라이언트의 쿠키값(세션쿠키)으로 저장되어
클라이언트 식별에 사용된다.
세션 동작 방식(서버는 세션ID를 사용하여 세션을 유지)
- 클라이언트가 서버에 1번요청을하면
- 서버가 세션ID를 생성하고 쿠키에 담아서 응답 헤더에 전달한다 EX) 형태는 SESSIONID = 12A345
- 클라이언트가 쿠키에 세션ID를 저장한다(세션쿠키 안에 속해있다)
- 클라이언트가 서버에 2번을 요청하면 (쿠키와 세션ID포함해서 요청)
- 서버가 세션 ID를 확인하여 1번요청과 같은 클라이언트임을 인지할 수 있다.(쿠키의 세션ID 역할)
쿠키 생성 코드
public static void addCookie(String cookieValue, HttpServletResponse res) {
try {
// Cookie Value 에는 공백이 불가능해서 encoding 진행
cookieValue = URLEncoder.encode(cookieValue, "utf-8").replaceAll("\\+", "%20");
Cookie cookie = new Cookie(AUTHORIZATION_HEADER, cookieValue); // Name-Value
cookie.setPath("/");
//만료기한
cookie.setMaxAge(30 * 60);
// Response 객체에 Cookie 추가
res.addCookie(cookie);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e.getMessage());
}
}
Cookie에 저장될 Name과 Value를 생성자로 받는 Cookie객체 생성 코드
Cookie cookie = new Cookie(AUTHORIZATION_HEADER, cookieValue);
Path와 만료시간 지정하는 코드
cookie.setPath("/");
//만료기한
cookie.setMaxAge(30 * 60);
- HttpServletResponse객체에 생성한 Cookie객체를 추가하여 브라우저로 반환한다.
- 반환된 Cookie는 브라우저의 Cookie저장소에 저장된다.
- Cookie생성은 범용적으로 사용될 수 있어 static (공용) 메서드로 선언
쿠키 읽는 코드
@GetMapping("/get-cookie")
public String getCookie(@CookieValue(AUTHORIZATION_HEADER) String value) {
System.out.println("value = " + value);
return "getCookie : " + value;
}
@CookieValue(Cookie의 이름)
위와 같이 어노테이션을 사용하고 인풋에있는 이름을 전달해주면
입력된 정보를 토대로 Cookie의 Value를 가져온다.
Servlet에서는
유일무이한 세션 ID를 간편하게 만들 수 있는
HttpSession을 제공한다.
HttpSession 생성 코드
@GetMapping("/create-session")
public String createSession(HttpServletRequest req) {
// 세션이 존재할 경우 세션 반환, 없을 경우 새로운 세션을 생성한 후 반환
HttpSession session = req.getSession(true);
// 세션에 저장될 정보 Name - Value 를 추가합니다.
session.setAttribute(AUTHORIZATION_HEADER, "Robbie Auth");
return "createSession";
}
- HttpServletRequest 를 사용하여 세션을 생성 및 반환 할 수 있다.
- req.getSession(true)
- 세션이 존재할 경우 세션을 반환하고 없다면 새로운 세션을 생성한다.
- 세션에 저장할 정보를 Name-Value형식으로 추가하고
위와같이 Cookie저장소에
JESSEIONID라는 Name으로 Value에 저장된다.
HttpSession읽는 코드
@GetMapping("/get-session")
public String getSession(HttpServletRequest req) {
// 세션이 존재할 경우 세션 반환, 없을 경우 null 반환
HttpSession session = req.getSession(false);
String value = (String) session.getAttribute(AUTHORIZATION_HEADER); // 가져온 세션에 저장된 Value 를 Name 을 사용하여 가져옵니다.
System.out.println("value = " + value);
return "getSession : " + value;
}
- req.getSession(false)
- 세션이 존재하다면 세션을 반환하고 없다면 Null을 반환한다.
- session.getAttribute(세션에 저장될 Name)
- Name을 상요하여 세션에 저장된 Value를 가져온다.
반응형
'Spring' 카테고리의 다른 글
스파르타 부트캠프 Spring Master 3강 필터(Filter) (0) | 2024.05.26 |
---|---|
스파르타 부트캠프 Spring Master 3강 패스워드 암호화 이해하기 (0) | 2024.05.25 |
스파르타 부트캠프 Spring Master 3강 인증과 인가란 (0) | 2024.05.24 |
스파르타 부트캠프 Spring Master 3강 같은 타입의 Bean이 2개일 경우 (0) | 2024.05.24 |
스파르타 부트캠프 Spring Master 3강 Bean을 수동등록 하는 방법 (0) | 2024.05.24 |