■ 세션(Session) 이란?
http 프로토콜의 약점을 커버하기 위해서 존재한다.
일정 시간동안(디폴트 30분) 같은 사용자(정확히 말하면 같은 브라우져)로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다. (서버에서 정보를 가지고 있고 쿠키는 클라이언트가 가지고 있는것)
세션의 정확한 뜻은 방문자가 웹 서버에 접속해 있는 상태를 말하는 것으로서, 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹브라우저를 종료함으로써 서버와 연결을 끝내는 시점까지를 하나의 단위로 보아 세션이라고 한다
■ 웹 세션(Web Session)의 특징
- Client 는 Web Site에 접속하게 되면 Server와 TCP특성인 3way-handshaking을 하게 된다. 신뢰관계를 유지하고 접속을 지속적으로 연결하겠다는 것이지만, 웹은 사용자가 요청해야지만 정보를 보내주는 특성 때문에 TCP의 지속적인 연결(Connection Oriented)한 성격을 잃어 버린다. 때문에 비 연속적으로 접근하는 웹 사용자를 구분하기 위해 Session Token을 사용한다.
■ 세션과 쿠키의 차이점
쿠키의 경우는 방문자(클라이언트)의 정보를 방문자 컴퓨터의 하드디스크에 저장하지만, 세션의 경우는 방문자의 요청에 따른 정보를 클라이언트에 저장하는 것이 아니라 웹서버가 세션 아이디 파일을 만들어 서비스가 돌아가고 있는 서버 자체에 저장한다.
■ Session Management 절차
1. Request : 사용자가 웹 사이트(웹 서버) 에 접속한다고 요청을 보낸 메세지
2. Session Token 생성 : 사용자가 접속한다는 Request를 보냈기 때문에 접속할 수 있는 Session Token을 생성
3. Response : 서버가 생성한 Session Token을 전송
4. Session Token 저장 : 사용자가 Session Token을 받고 저장
5. 로그인 하지 않고 웹 사이트를 이용!
-->> 웹 사이트에서 좀 더 많은 권한을 가지고 접속을 하고 싶다면 로그인 을 해야한다.
6. Session Token + 로그인 정보 전송 : 로그인 하게 되면 기존에 가지고 있던 Session Token 값과 로그인 정보를 서버에 보낸다.
7. 서버에서는 Session Token 과 로그인 정보를 매핑하여 로그인 인증까지 허용하는 Session Token을 만든다.
8. 로그인 후 웹 서비스 이용!
++ 로그인 전의 Session Token 은 로그인 되지않은 사용자 정보만 가지고 있다.
++ 로그인 후의 Session Token 은 로그인 되어있는 사용자 정보를 가지고 있다.
■ getSession(boolean create)?
(1) getSession(false)
session Object가 존재하면, 현재 HttpSession을 반환한다.
존재하지 않으면, null을 반환(return)한다.
(2) getSession(true) - default
session Object가 존재하면, 현재 HttpSession을 반환한다.
존재하지 않으면, 새로 생성한다.
■ 세션을 가져올때는 어딜 통해서 얻어올 수 있다? request!
■ 쿠키는 생성과 동시에 집어넣어야 하는데, 세션은 얻어와야한다
Reference
https://mohwaproject.tistory.com/entry/HTTP-Session-%EC%9D%B4%EB%9E%80
https://m.blog.naver.com/PostView.nhn?blogId=shackerz&logNo=220387046669&proxyReferer=https%3A%2F%2Fwww.google.com%2F