The Django Authentication System🎨

authentication 인증 -> 신원 확인
authorization 권한 -> 권한 부여


계정과 관련된 앱을 만들 때는
앱 이름을 accounts로 하는 것이 편하다우 (권장!!👓)


HTTP 특징 🎄

  • 비연결지향(connectionless):서버는 요청에 대한 응답을 보낸 후 연결을 끊음
  • 무상태(stateless): 연결을 끊는 순간 클라이언트와 서버 간의 통신이 끝나며 상태 정보가 유지되지 않음

-> 쿠키와 세션의 존재 이유!!!🧶


쿠키 🍪🍪🍪🍪🍪

  • 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각
  • 쿠키는 key-value 형태로 저장됨
  • 쿠키 사용 목적 -> 세션관리(로그인, 아이디 자동 완성, 장바구니, 공지 하루 안보기)/ 개인화/ 트래킹

세션 🥩

  • 사이트와 특정 브라우저 사이의 '상태'를 유지시키는 것
  • 클라이언트가 서버에 접속하면 session id를 발급하고, 클라이언트는 발급 받은 session id를 쿠키에 저장

로그인 🍲

  • session을 create하는 로직과 같음

    login(request, user, backend=None)

def login(request):
    if request.user.is_authenticated:
        return redirect('articles:index')

    if request.method == 'POST':
        form = AuthenticationForm(request, request.POST)
        if form.is_valid():
            # 로그인~~~~~~~~~~~
            auth_login(request, form.get_user())
            return redirect(request.GET.get('next') or 'articles:index')
    else:
        form = AuthenticationForm()
    context = {
        'form': form,
    }
    return render(request, 'accounts/login.html', context)
  • 로그인은 session을 CREATE하는 과정이다.
  • 로그인을 해주는 form -> AuthenticationForm

로그아웃 🎂

  • 현재 요청에 대한 session data를 db에서 완전히 삭제하고, 클라이언트의 쿠키에서도 sessionid가 삭제됨.
@require_POST
def logout(request):
    if request.user.is_authenticated:
        auth_logout(request)
    return redirect('articles:index')

0개의 댓글

Powered by GraphCDN, the GraphQL CDN