반응형

springboot 에서 cookie와 session 을 어떻게 사용하는지에 대해서 간단한 code를 통해 알아보자.

 

cookie의 추가

.....

@GetMapping("/tmp")
public String tmp(HttpServletRequest req, HttpServletResponse res)
{
  ....
  Cookie newCookie = new Cookie("cname", "cval");
  newCookie.setMaxAge(60); //60 seconds
  newCookie.setSecure(true);
  res.addCookie(newCookie);
  ......
  return "somthing";
}

 사용법은 단순하게 Cookie 생성 후 해당 Cookie의 각 속성에 대해서 지정한 후 response에 포함시켜 전달하면 된다.

 

cookie 내용 확인

....

@GetMapping("/tmp")
public String tmp(@CookieValue String email, @CookieValue("username") String username)
{
 //해당 Annotation 을 통해 접근 가능.
  return "something";
}

@GetMapping("tmp2")
public String tmp2(HttpServletRequest request)
{
 ....
 var cookies = request.getCookies();
 for(var coookie : cookies)
 {
   var cname= cookie.getName();
   var cval = cookie.getValue();
   // do something
 }
 return "something";
}

spring boot 에서는 위처럼 Annotation을 활용하거나 request에 직접 접근하여 cookie를 확인하는 방법이 존재한다.

 

 

session에 접근하기

.....

@GetMapping("tmp")
public String tmp(HttpServletRequest request)
{
 ....
 HttpSession session = request.getSession();
 //session에 특정 정보 추가하기
 session.addAttribute("someKey", "thisValue");
 ........
 
 return "something";
}


@GetMapping("tmp2")
public String tmp2(HttpServletRequest request)
{

  ......
  var session = request.getSession(false);
  //false인 경우 해당 요청에 session 이 존재하지 않을때 null을 반환
  if(session == null)
  {
    session = request.getSession(true);
    //true인 경우 session 이 없으면 새로운 session 을 생성& 반환.
  }
  return "smoethig";
}

@GetMapping("tmp3")
public String tmp3(@SessionAttribute(name="someKey", required=false) String thisValue)
{
  //session에 someKey에 대한 정보가 없는 경우 thisValue는 null
  
}

 

springboot에서는 위처럼 간단하게 session 정보에 대해서 접근 및 가공이 가능하다.

반응형

'SpringBoot' 카테고리의 다른 글

Spring에서의 IOC  (0) 2023.12.11
IOC란 무엇인가?  (0) 2023.12.11
Bean과 Component  (0) 2023.11.30
SpringBoot와 SpringMVC의 차이와 특성에 대하여  (0) 2023.11.29
@SpriongBootApplication 에 대해서  (0) 2023.11.29
Posted by Sweetmeats_boy
반응형

개인 공부용 포스팅입니다. 틀린 내용이 포함되어 있을 수 있으니 적당히 거르고 검증하시길 바랍니다.

틀린 내용은 댓글로 알려주시면 확인 후 반영하겠습니다.

 

세션이란 무엇인가?

 - 웹에서 사용자의 정보를 저장하는 방법을 의미한다.

 - 또 다른 의미로는 사용자가 브라우저를 닫기전까지 연결이 유지되는 상태를 의미하기도 한다.

 

Session은 server에 사용자의 중요한 정보를 저장하고 이에 대한 id값을 cookie에 전달하여 

실제 사용자가 해당 id를 통해 사용자 정보에 접근할수 있게 해준다.

기존 Cookie를 활용하는 방법보다는 보안성 측면에서 훨씬 안전하다.

 

일반적인 Session 과정

 - 사용자가 server 에 접속

 - server는 해당 요청 속 JSESSIONID header가 존재하는지 여부를 확인

 - 없다면 새로운 session id를 발급

 - 발급된 session id를 response의 JSESSIONID Header에 저장

 - 이후 요청에는 신규발급된 session id가 포함되어 요청됨

 - 사용자의 로그인 요청

 - 해당 유저의 로그인 정보 확인

 - 확인 후 적합한 로그인 요청이었다면 해당 회원에 대한 session 정보 생성

 - 각 요청에 대해서 server는 session id를 통해 해당 유저의 session data를 활용

   -> 해당 유저의 요청에 대해서 authentication, authorization 등을 검증 시 활용.

 

참고 : 해당 JSESSIONID cookie는 session cookie이므로 브라우저와의 접속이 끊길 시 자동으로 사라진다.

참고2 : JSESSIONID cookie에 대해서 별도의 만료기간을 지정할 수 있다.

 

세션의 실제활용 예

 - 로그인을 한 유저인지 판별

 - 로그인 후 특정 권한에 대한 정보 식별

 - 특정 page에 접근 시 권한 확인.

 - 유저가 로그아웃 시 새로운 session id를 발급.

 

세션의 단점

 - 기본적으로 cookie보다는 보안성이 좋지만 특정 유저의 session id를 탈취당하면 보안이슈가 발생할 수 있다.

반응형

'Web' 카테고리의 다른 글

인터넷의 작동 방식에 대해서  (0) 2023.12.13
REST API에 대해서.  (0) 2023.12.11
웹에서 쿠키란 무엇이고 어떻게 활용되는가?  (0) 2023.11.14
OAuth2에 대해서.  (0) 2023.11.14
[web] 알아두면 좋은 개념 정리 - 3  (0) 2021.07.01
Posted by Sweetmeats_boy
반응형

개인 공부용 포스팅이라 다소 틀린 내용이 포함되어 있을수 있으니 적당히 거르고 검증해서 보시기 바랍니다.

틀린내용은 댓글로 알려주시면 감사합니다.

 

쿠키란?

 - 서버의 필요에 따라서 웹 브라우저가 저장하는 작은 데이터들이라고 생각하면 된다.

 - 쿠키는 서버에서 오는 응답 속 header 내용에 따라서 저장된다.

 - 그냥 로컬 파일 데이터라고 생각하면 편함

 

쿠키는 어떻게 사용하는가?

 - 서버의 응답속 Heaer 중 Set-Cookie Header안에 key=value 형태로 포함되어 있다.

 - 해당 key에 따른 value 값을 저장하며 쿠키 항목에 대한 여러가지 추가 설정을 지정할 수 도 있다.

 

쿠키 저장 순서

 - Response 내의 Set-Cookie Header 확인.

 - 해당 Header 속 cookie들을 웹 브라우저가 저장

 - 그 이후 브라우저를 통해 보내는 요청에는 cookie 정보가 포함되어 전송된다.

 

쿠키의 활용 예

 - 특정 유저의 로그인 정보를 개별 브라우저에 저장하여 자동 로그인에 활용 가능

 - 특정 계정의 인터넷 검색어 등을 쿠키에 저장하고 이를 활용하여 유저에게 맞춤 화면을 노출 가능.

 

쿠키의 장점

 - http 특징중 하나인 stateless를 극복하려할 때 쿠키를 사용 가능.

  -> 위의 활용 예와 같은 경우 특정 유저에 대한 일종의 상태정보를 쿠키로 누적 가능.

 

쿠키의 단점

 - 브라우저에 저장된다.

 - 타인에게 노출되거나 변조될 여지가 있다.

 - 웹 브라우저마다 생성되기 때문에 다른 브라우저로 접속시 쿠키가 유지되지 않는다.

 

사실상 단점중 보안상의 이슈가 제일 크며 이로 인해 중요한 정보를 쿠키로 저장하면 이슈가 생길 수 있다.

 

==============

위에서는 간단한 내용만 적어보았고 이제 좀더 세세한 내용을 알아 보자

===============

 

쿠키의 종류는 어떤것이 있을까?

1. persistence cookie

2. session cookie

 

persistence cookie

 - 파일로 생성된다.

  -> tmi : 임시 인터넷 파일로 생성됨.

 - 브라우저의 쿠키 파일을 삭제하거나 해당 쿠키가 만료된 후 사라진다.

 - 최초 접속 시 서버로 전송된다.

 - 주로 사용되는 곳으로는 팝업 하루동안 띄우지 않기 등이 있다.

 

session cookie

 - 브라우저의 메모리에 생성된다.

 - 브라우저를 종료하면 사라진다.

 - 최초 접속 시 서버로 전송되지 않는다.

 - 주로 session id를 저장할 때 허용된다.

 

cookie 실제 추가 요청 시

server response :

 - Set-Cookie : tmp_cookie=tmp_val

 - Set-Cookie : other_key=other_value

 

cookie가 실제 request에 포함되어 있을 때

 - cookie Header 안에 포함되어 온다.

 - ex 

    -> cookie : tmp_name=tmp_val;  other_cookie_name=other_cookie_val; ...

    -> cookie라는 Header 안에 ;를 구분자로 여러 cookie 항목이 저장되어 있다.

 

위와 같이 server response에 Set-Cookie header가 들어 있다면

브라우저는 해당 cookie들을 저장한다. 이때 Set-Cookie는 한가지 쿠키밖에 지정을 못하기 때문에 

여러 쿠키를 저장할 경우 Set-Cookie Header를 여러개 지정해 주어야 한다.

 

cookie 추가 시 여러가지 속성 지정하는 방법

Header에 cookie를 지정할 때 여러가지 속성을 지정할 수 있으며 종류는 대략 아래와 같다.

 - cname=calue : cookie 이름과 cookie 값

 - expires=someday : 해당 cookie의 만료 기간에 대한 정보.

  -> 참고 : Max-Age로 해당 쿠키의 유효기간을 짖어할 수도 있다

  -> 참고2 : expires, Max-Age를 지정하면 해당 cookie는 persistence cookie가 된다.

그외에도 path, domain 등의 속성 지정이 가능하니 필요 시 검색해보길 바란다.

 

session cookie 중 알아야하는 것으로는 JSESSION cookie 항목이 있다.

 - Session에 대한 정보를 서버가 저장한 후 이에 대해 접근할 수 있도록 지정한 id 를 저장하는 cookie

 - 주의 : Session 에 대한 정보를 저장한 cookie가 아니고 그에 대한 식별id 정보이다.

 - 주의2 : 해당 JSESSION 속 session id는 각각 접속시, 각각의 브라우저 마다 다르게 할당된다.

 

반응형
Posted by Sweetmeats_boy

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.11
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함