[SSAC X 코딩온] (2021.09.03) Django로 CRUD 구현하기_03

RyuSW·2021년 9월 4일
0

🔖 세션 (Session) > 서버에 저장


  • 세션이란, 서버가 클라이언트(웹브라우저)를 인지하게 하는 인증 정보다.

    • ex) 영화 예매, 비행기표 예매

    • 토큰(Token)과의 차이점 :

    • 서버가 세션을 생성, 그 웹브라우가 누군지를 인지하고 있다는 거야, 로그인하는 순간 서버가 세션을 생성해서 웹브라우저에 요청을 보낸다.

    • 세션이 만료되었다는 뜻은 서버가 이 사람은 윤영우님이야라는 것을 알고 있었는 데 그 정보를 파기한다는 뜻 따라서 사용자의 정보를 일부러 까먹었다는 것을 의미한다.

    • 서버 입장에서는 DA DB라는 좌석을 확보하엿음이라는 정보를 서버가 갖고 그것을 보통 20분을 준다. 다른 사람들에게 선택된 좌석을 선택하지 못하도록 정보를 사람들에게 제공해줌.

    • 일반적으로 세션 만기(expire)시점은 웹브라우저 종료시 까지이다.

    • 단, 좌석 예매, 티켓 예매 같은 경우엔 10분 내지는 20분으로 제한하기도 한다.

    • 세션이 만료되었다고 말하는 것이 그런게 사용자 친화적인 홈페이지를 만드려면 예약 시점으로부터 20분이 경과하여 "예약 시간이 너무 길어져서 처음부터 다시 하세요"라고 안내해 주기도 한다. 영어 창으로는 "Session Expire"이 뜬다.

    • 이건 로그인할 때 만든다.

    • 같은 웹브라우저가 다 꺼져야 세션이 종료되도록 Chrome이랑 Edge등이 설계되어있다.




  • 검색 기록 등을 쿠키에 저장, 그리고 해당 기록 등을 토대로 알맞는 광고나 정보 등을 저장함.

  • 검색 로그 ,기록 등을 웹브라우저가 갖고 있음. 서버에 쿠키 정보를 보내서 해당 정보에 맞는 광고를 보낸다.

  • 다른 웹브라우저 간에는 공유되지 않음

  • 개발자도구의 Application > cookie 에서 확인 가능

  • 세션은 종료되면 정보가 다 날라가지만 쿠키는 정보를 엄청 오랫동안 저장한다.



📡 로그인 실습하기


  1. (클라이언트) 폼에서 아이디, 비번 날린다!

  2. 서버에서 그 아이디와 비번에 매칭하는 DB데이터가 있는 지 검색한다.

      1. 없으면 로그인 실패
      1. 있으면 로그인 성공 → 로그인 한 사람 아이디로 세션 생성
  3. 서버에서 그냥 변수를 하나 만든다!

  • views.py
req.session["id"] = req.POST.get("id") # ["id"]는 세션 변수, ("id")는 정보를 받아오는 name
req.session["pw"] = req.POST.get("pw") 

a = 3

print(req.POST.get["id"])
  • user, member, admin, session : Django 에서 기본으로 제공하는 기능들

  • query 셋 에러가 get으로 받아야 되는걸 filter로 받았기 때문에 발생한 것이다.

  • filter는 바구니에 쌓여잇는 상태로 쿼리 자체를 불러오는데 안에 뭐가 있는지 모르기 때문에 에러 발생

  • get은 안에 어떤 것을 가져온다고 확실히 선언하기 때문에 에러가 발생 안함.


  • 세션 저장: req.session['key'] = 값

  • 세션 로드: req.session.get('key') = 값

  • 세션 삭제: req.session.pop('key') = 값


  • redirct : 우리가 설정한 주소로 이동하는 역할을 수행한다.

    • ../main 윗 경로로 이동하는 링크. 절대경로보다 효율성이 좋아서 쓰기 좋음

      static 폴더는 기본적으로 settings.pySTATIC_URL = '/static/' 라고 설정되어 있어서 static 폴더를 그대로 사용할 예정이라면 따로 설정해주실 필요가 없다!



✅ 실습 과제


  1. 로그인 시점에 세션을 생성하여 임의의 경로로 접속하였을 때

      1. 세션이 없다면 → "로그인 먼저 해주세요" 메세지 출력
      1. 세션이 있다면 → "000님 환영합니다" 메세지 출력
  2. 각자 자유롭게 사이트 만들기 (ex: 쇼핑몰 등)



😫 수업 후기


profile
배운 것은 항상 그 때 문서화하자!

0개의 댓글