[SSAC 3기] - 5주차-(3)

SangHoon·2021년 9월 6일
2

SSAC 3기과정

목록 보기
14/22
post-thumbnail

💻Django8


이제 Django를 통해 완벽한 회원가입, 로그인 구현하여 마무리하자!!!!!!!!
(장고 짤이제없숴..)

  1. 세션을 활용해서 로그인 및 로그아웃 구현
  2. 세션, 쿠키, 토큰의 차이점

📨세션(session)


서버가 클라이언트를 인지하게 하는 인증 정보

  1. 정의

    • 브라우저가 종료 되기 전까지 클라이언트의 요청을 유지하게 해주는 기술이다.
  2. 사용처

    • 로그인, 영화예매와 같은 곳에 쓰임
  3. 동작원리

    • 각 클라이언트에게 고유ID를 부여하고 구분하여 클라이언트의 요구에 맞는 서비스를 제공한다.
  4. 저장위치

    • 서버 메모리에 저장한다.
      (발급받은 세션 아이디를 쿠키에 저장후 서버로 전달)
  5. 보안

    • 클라이언트 정보 자체는 서버에 저장되어 있으므로 비교적 안전하다.
  6. 세션만료

    • 일반적으로 브라우저가 종료되었을때를 의미
    • 사용자의 사용시간을 설정해 놓는데, 일정시간이 지남을 의미

🍪쿠키(cookie)


쿠키는 클라이언트에 저장되는 키와 값이 들이있는 작은 데이터 파일

  1. 정의
    • 쿠키는 이름, 값, 만료날짜(쿠키 저장기간), 경로정보가 들어 있는데, 일정 시간동안 데이터를 저장하여 로그인 상태를 유지하는 기술이다.

  2. 사용처
    • 방문사이트에 아이디, 비밀번호를 저장
    • 쇼핑몰에서 장바구니
    • 광고팝업창

  3. 동작원리
    • 클라이언트가 페이지 요청시 서버에서 쿠키생성후 보내주고, 브라우저가 종료되어도 쿠키 만료시간이 있다면 클라이언트에서 보관하고 있다가 클라이언트 pc에 파일로 저장한다. (이게 맞아?.??)

  4. 저장위치
    • 클라이언트 (웹브라우저)에 저장한다.

  5. 보안
    • 클라이언트에 저장되기 때문에 변질되거나 스니핑 당할 우려가 있어서 보안에 취약하다.

  6. 쿠키확인
    - 개발자도구(F12) -> aplication -> cookies
    - 주소창옆 자물쇠 -> 쿠키

🤔세션과 쿠키의 차이점


가장큰 차이점은 저장위치, 속도, 보안, 라이플사이클

세션 쿠키
저장위치 서버 클라이언트
속도 느리다 빠르다
보안 안전 취약
라이프사이클 브라우저 종료시 삭제 만료시간에 따라 브라우저 종료시에도 유지하게 할 수 있음

📃토큰(token)


인증을 하고 필요한 데이터를 갖고 있는 토큰을 주고 받으며 인증을 합니다. (+ 추가)

  1. 동작원리
    • 클라이언트가 서버에게 로그인 요청을 보내고,서버에서 토큰을 생성해줘서 응답하고 클라이언트가 요청할때 마다 토큰 정보를 붙여서 서버에게 요청하며, 이에 대한 응답을 주고 받는다.
    • 대표적으로 JWT(JSON Web Token)이 있다.😍!!

  2. 세션과의 차이점
    - 토큰은 유저의 정보가 클라이언트에 저장된다.
    - 토큰은 xss 공격에 취약하다

🔐세션관리(Session Management) 실습


세션생성하여 로그인 성공했을때 해당 아이디 출력하며,
과제 하기전 세션 개념 잡고 넘어가기 (차려진 밥상에 숟가락)

  1. 세션저장
    req.session['키'] = 값
  2. 세션로드
    req.session.get('키') = 값
  3. 세션검사
    req.session.get('키', )
  4. 세션삭제
    req.session.pop('키') = 값
  <views.py>

  req.session["id'] = req.POST.get("id")
  req.session["pw"] = req.POST.get("pw")

  print( req.session["id"] ) 	#이름 출력

📚과제


기존 회원가입, 로그인 기능에 세션 추가하기

  1. 로그인 시점에 세션을 생성 하여 임의의 경로로 접속
  2. 자유롭게 사이트 만들기
    - ex) 쇼핑몰 등
    - ~ing

🦈수업후기



세션, 쿠키 차이에 대해서 짧고 명료하게 설명해주셔서 이해가 수월했고, 실습시간과 과제를 미리 할 수 있는 시간을 통해 스스로 해보면서 익히게 하는 수업이 너무 좋았다. 그리고 그때 그때 저희 눈높이에 맞추어 친철하게 최선을 다해 질의응답해주시는 강사님이 멋져브러 멋있으셨다.

그리고 요즘 여러가지를 한번에 하려다보니 태스크 관리가 잘 되지 않아 과제를 제출하는걸 깜빡하거나, 벨로그를 늦게 업로드하게 되었는데 이번주부터는 그런일이 없도록 빡집중 하자 이.상.훈!!!!!!! (운동을 줄여야 하나,,)

profile
되는 이유만 생각하는 카멜레온

2개의 댓글

comment-user-thumbnail
2021년 9월 6일

서버에서 세션을 가지고 있잖아요?
JWT는 그럴필요없이 헤더에 토큰만 담아서 보내주면되기때문에 stateless한 서버가 구성이 가능해요.
또한 서버가 여러대 있는 경우 세션기반으로 인증을 하게 된다면 각 서버마다 똑같은 세션정보를 가지고 있어야 해서 RDB에 저장하거나 Redis 같은 in-memory-database(캐싱)를 사용해야하죠.
하지만 JWT의 경우 서버에서 가지고있을 필요가 없기 때문에 서버 확장에 용이해요.

그래서 두 방식중 무엇을 사용할지 고려할 때 제가 위에서 말씀드린 내용을 고려해서 결정하면 됩니다.

꿀팁

  • 토큰 방식에서 로그아웃할 때 쿠키에 토큰이 담겨있다면 response할때 삭제해서 보내주면 됩니다.
  • 프로젝트하실 때 웬만하면 (client-side framework)-(was framework) 구조는 건드려줘야할게 더 많기 때문에 정신건강을 위해 ..... 지양하십시오....

블로그 재밌게 잘보고있습니다. 화이팅!

1개의 답글