auth

Shin Woohyun·2021년 7월 17일
0

django에서는 내장된 authenticate, login, logout 함수로 편하게 auth를 관리할 수 있다.

Flow
1. login_view를 통해 form으로 작성된 username과 password를 받아와서 authenticate로 확인한다.
2. 확인된 user가 None이 아니라면, 즉 인증된 user라면 login을 통해 로그인이 되고, index로 넘어가서 is_authenticated를 만나서 로그인 여부 확인 후에 user.html이 렌더링 된다.
3. 확인된 user가 None이라면, Invalid Credentials 메시지와 함께 로그인 페이지가 렌더링 된다.

from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render
from django.urls import reverse
from django.shortcuts import render
from django.http import HttpResponseRedirect

# Create your views here.
def index(request):
    if not request.user.is_authenticated:
        return HttpResponseRedirect(reverse("login"))
    return render(request, "users/user.html")

def login_view(request):
    if request.method == "POST":
        username = request.POST["username"]
        password = request.POST["password"]
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return HttpResponseRedirect(reverse("index"))
        else:
            return render(request, "users/login.html", {
                "message": "Invalid credentials."
            })
    return render(request, "users/login.html")

def logout_view(request):
    logout(request)
    return render(request, "users/login.html", {
        "message": "Logged out."
    })

https://youtu.be/YzP164YANAU

0개의 댓글