📌 오늘의 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() 함수의 동작 과정
- username과 password를 인자로 받아 Django의 기본 인증 백엔드를 통해 확인.
- 자격 증명이 올바르면 User 객체를 반환.
- 자격 증명이 틀리면 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()를 사용해야 함.
'내일배움캠프 TIL' 카테고리의 다른 글
| 2025.03.07 TIL:Django - Logout 기능 구현 (0) | 2025.03.07 |
|---|---|
| 2025.03.06TIL : Django - Authentication & Permission (인증과 권한) (0) | 2025.03.06 |
| 2025.02.12TIL : LangChain (0) | 2025.02.12 |
| 2025.02.11 TIL - Django : 흐름도 (0) | 2025.02.12 |
| 2025.02.10TIL : Django Admin (0) | 2025.02.10 |