본문 바로가기
내일배움캠프/Django

Django 4일차

by useSword 2024. 4. 16.

쿠키와 세션을 예전부터 몇번 사용해봤지만 솔직히 자세히 이해가 안되었다

클라이언트에서 회원가입을 하면 세션를 제공하는 것 정도만 알고 있었지만
이 때 http의 특징을 제대로 모르고 기억을 하기 위해 쿠키가 필요한 사실도 몰랐다.

 


http 특징

비연결지향 : 한 번 요청에 대한 응답을 하면 연결이 끊어짐
무상태 : 연결이 끊어지면 통신이 끝나고 서로를 잊음,모든 메세지는 독립적

>>>http가 서로를 기억하기 위해서는 쿠키와 세션이 필요.

 


쿠키

서버 -> 웹에 전달하는 작은 데이터조각
ket-value 형태로 데이터를 저장

 

웹에 요정을 보내면 서버가 쿠키를 함깨 전달
이후부터는 같은 서버에 보내는 모든 요청에 쿠키를 담아서 요청을 보내게 됨
예시 : 장바구니 , 오늘하루 보지 않기 팝업창


 


세션

클라이언트가 서버에 접속하면
서버가 특정 세션id를 발급하고 기억
세션id를 전달받아 쿠키에 저장
이후 클라이언트는 쿠키를 이용해서 요청
서버에서는 쿠키의 세션id 값을 확인하여 검증 

쿠키의 수명
세션쿠키 :  현재의 세션이 종료되면(브라우저가 닫히면) 삭제
지속쿠키 : 디스크에 저장되며 브라우저나 컴퓨터를 재시작해도 남아있음. 지속기간을 정하고 기간이 지나면 삭제 가능

 


로그인

결국 세션을 생성하는 로직


장고에서의 로그인은 아래의 로직을 거침.

이 부분을 통해 react에서 짠 로그인 관련 로직들에서 부족한 점들을 알게 되었고

특히 회원탈퇴 로직이 굉장히 인상깊었음.

 

<로그인>
1. 아이디,유저이름,이메일 등 DB 확인
2. 비밀번호
3, 유저 판독
4. 세션 테이블
5. 난수 랜덤 생성
6. 기억(저장)
0. 쿠키에 5번의 정보를 담아서 보내줘야함

 

<회원 탈퇴>

에 관한 코드를 아래와 같은데

        request.user.delete()를 통해 개발자도구에서 애플리케이션에서의 쿠키 값들 중 세션과 관련된 부분이 삭제됨.

하지만 DB까지 지워지진 않았기에
        auth_logout(request)를 사용하니 DB까지 지워지는 모습을 볼 수 있었음

이 순서는 중요하고 절대 바뀌면 안됨.// 이 부분에 대해서는 따로 궁금점이 약간 있음.

def delete(request):
    if request.user.is_authenticated:
        request.user.delete()
        auth_logout(request)
    return redirect('index')

 

'내일배움캠프 > Django' 카테고리의 다른 글

Django 7일차  (1) 2024.04.19
Django 5일차  (0) 2024.04.17
Django 3일차  (0) 2024.04.12
Django 2일차  (0) 2024.04.12
Django 기초 1일차  (0) 2024.04.08