9. Django 학습노트-Cookies 및 Session

기사 목록

  • Cookies
  • Session

  • Cookies


    이론적으로 한 사용자의 모든 요청 조작은 같은 세션에 속해야 하고 다른 사용자의 모든 요청 조작은 다른 세션에 속해야 하며 양자는 혼동해서는 안 된다.웹 응용 프로그램은 HTTP 프로토콜을 사용하여 데이터를 전송하고 HTTP 프로토콜은 무상태 프로토콜입니다.데이터 교환이 완료되면 클라이언트와 서버 측의 연결이 닫히고 다시 데이터를 교환하려면 새로운 연결이 필요합니다.이것은 서버가 연결에서 세션을 추적할 수 없다는 것을 의미한다.이 세션을 추적하려면 메커니즘을 도입해야 한다.쿠키는 바로 이런 메커니즘이다.이것은 HTTP 프로토콜의 상태가 없는 부족함을 보완할 수 있다.Session이 등장하기 전에 기본적으로 모든 사이트는 쿠키를 이용하여 세션을 추적한다.쿠키는 실제로 텍스트 메시지의 일부분이다.클라이언트가 서버를 요청합니다. 만약 서버가 이 사용자의 상태를 기록해야 한다면response를 사용하여 클라이언트 브라우저에 쿠키를 발급합니다.클라이언트 브라우저는 쿠키를 저장합니다.브라우저가 이 사이트를 다시 요청할 때, 브라우저는 요청한 사이트 주소를 이 쿠키와 함께 서버에 제출합니다.서버에서 사용자 상태를 식별하기 위해 쿠키를 확인합니다.서버는 필요에 따라 쿠키 내용을 수정할 수도 있습니다.   HTTP는 무상태 프로토콜이기 때문에 서버는 네트워크 연결에서 고객의 신분을 알 수 없다.어떡하지?클라이언트들에게 통행증을 발급해 주십시오. 한 사람당 한 사람씩 방문하든지 간에 반드시 자신의 통행증을 휴대해야 합니다.이렇게 하면 서버가 통행증에서 고객의 신분을 확인할 수 있다.이것이 바로 쿠키의 작업 원리다.   쿠키는 서버에서 생성됩니다. Response를 통해 쿠키를 브라우저에 기록합니다. 다음 방문은 브라우저가 서로 다른 규칙에 따라 쿠키를 가져옵니다.주의: 쿠키는 브라우저를 뛰어넘을 수 없습니다.
    쿠키 설정(response 설정 사용):
        response.set_cookie(key,value[,max_age=None,expires=None])
        max_age:    , cookie 
         None: 
    	expires:  , datetime timedelta, 
    				expires=datetime.datetime(2019, 1, 1, 2, 3, 4)
                   datetime.datetime.now() + datetime.timedelta(days=10)
    		
         :max_age expries 
    	# response.set_cookie('username', username, max_age=10)	
    	# response.set_cookie("username", username1, expires=d)
    

    쿠키 가져오기 (request 가져오기 사용):
    request.COOKIES.get('username')
    

    쿠키 삭제(response를 사용하여 삭제):
    response.delete_cookie('username')
    

    쿠키는 클라이언트에 저장되는 장점: 데이터는 클라이언트에 존재하고 서버 측의 압력을 덜어주며 사이트의 성능을 향상시킨다.단점: 보안이 높지 않음: 클라이언트에서 사용자 세션 정보를 쉽게 보거나 풀 수 있음

    Session


    서버 사이드 세션 기술, 쿠키에 의존.django에서 세션 설정 사용
    	INSTALLED_APPS:
    		'django.contrib.sessions'
    	MIDDLEWARE:
    		'django.contrib.sessions.middleware.SessionMiddleware'
    

    기본 작업  1) Sessions 값 설정(request 설정 사용)
          request.session['username'] = username
    

     2) Sessions 값 가져오기
    	  get(key,default=None)  
          username = request.session.get("username")  
          #   session_name = request.session["session_name"]
    

     3) Sessions 값 삭제
    	  del request.session["session_name"]
    	  clear()  
    	  flush()  cookie
    	  session.session_key session key
    

    데이터는 데이터베이스에 저장되어 인코딩됩니다. 사용하는 것은 Base64입니다. 모든 HttpRequest 대상은session 속성이 있고 클래스 사전 대상입니다.

    좋은 웹페이지 즐겨찾기