📌 오늘의 TIL - authenticate() in Django

🔹 authenticate()란?

Django의 authenticate() 함수는 사용자의 자격 증명을 확인하는 역할을 합니다.
즉, 사용자가 입력한 아이디(username)와 비밀번호(password)가 올바른지 검증하는 함수입니다.

from django.contrib.auth import authenticate

user = authenticate(username='testuser', password='testpassword')

if user is not None:
    print("인증 성공! 로그인 가능")
else:
    print("인증 실패! 잘못된 자격 증명")

🔹 authenticate() 함수의 동작 과정

  1. username과 password를 인자로 받아 Django의 기본 인증 백엔드를 통해 확인.
  2. 자격 증명이 올바르면 User 객체를 반환.
  3. 자격 증명이 틀리면 None을 반환.

🔹 실제 로그인 예제

보통 authenticate()는 login() 함수와 함께 사용됩니다.

from django.contrib.auth import authenticate, login
from django.shortcuts import redirect

def user_login(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 redirect('home')  # 로그인 성공 후 홈 페이지로 이동
        else:
            return render(request, 'login.html', {'error': '아이디 또는 비밀번호가 틀렸습니다.'})
    return render(request, 'login.html')

🔹 사용할 때 주의할 점

✅ authenticate()는 password를 암호화된 상태로 비교하므로, 직접 user.password와 비교하면 안 됨.
✅ authenticate() 후 반드시 login(request, user)을 사용해야 세션에 저장됨.
✅ None이 반환될 경우 적절한 오류 메시지를 표시하여 보안성을 유지.


🎯 오늘의 정리

  • authenticate()는 Django에서 사용자 인증을 수행하는 함수.
  • username과 password를 검증하여, 맞다면 User 객체를 반환하고 틀리면 None을 반환.
  • login()과 함께 사용하여 세션에 사용자 정보를 저장.
  • 직접 user.password를 비교하면 안 되고, 반드시 authenticate()를 사용해야 함.

 

+ Recent posts