Django REST framework은 웹 애플리케이션의 백엔드에 사용되는 인기있는 프레임워크입니다. 이 프레임워크를 사용하여 사용자 로그인 시도에 대한 로그를 처리하는 방법에 대해 알아보겠습니다.
로그인 로그를 저장하는 모델 만들기
먼저, 로그인 로그를 저장할 모델을 만들어야 합니다. 이 모델은 사용자의 로그인 시간, IP 주소, 성공/실패 여부 등과 같은 정보를 저장할 수 있어야 합니다. 아래와 같이 모델을 만들어 보겠습니다.
from django.db import models
from django.contrib.auth.models import User
class LoginLog(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
login_time = models.DateTimeField(auto_now_add=True)
ip_address = models.CharField(max_length=50)
is_success = models.BooleanField()
위의 코드에서는 User
모델과 1:N 관계로 연결된 LoginLog
모델을 정의하였습니다. 로그인 시간은 자동으로 생성되도록 login_time
필드를 auto_now_add
로 설정하였고, ip_address
필드는 로그인을 시도한 IP 주소를 저장하기 위해 문자열 필드로 설정하였습니다. is_success
필드는 로그인이 성공했는지를 나타내는 부울 필드입니다.
로그인 시 로그 저장하기
이제 실제 로그인이 발생하는 시점에서 해당 로그를 저장하는 코드를 추가해야 합니다. Django에서는 authenticate
함수를 사용하여 로그인 인증을 처리할 수 있습니다. 아래와 같이 authenticate
함수를 호출한 뒤, 로그를 저장하는 코드를 추가해 보겠습니다.
from django.contrib.auth import authenticate, login
from .models import LoginLog
def login_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
is_success = True
else:
is_success = False
# 로그인 로그 저장
LoginLog.objects.create(user=user, ip_address=request.META['REMOTE_ADDR'], is_success=is_success)
# 로그인 성공/실패에 따른 처리
if is_success:
# 로그인 성공 시 처리할 내용
pass
else:
# 로그인 실패 시 처리할 내용
pass
위의 코드에서는 authenticate
함수를 사용하여 유효한 사용자인지를 확인하고, 로그인이 성공했는지 여부를 is_success
변수에 저장합니다. 그리고 해당 로그를 LoginLog
모델에 저장합니다. 로그인이 성공하면 login
함수를 사용하여 실제로 로그인 처리를 실행하고, 필요한 추가 작업을 수행할 수 있습니다.
로그인 로그 조회하기
로그인 로그를 확인하기 위해 조회 기능을 추가할 수도 있습니다. 예를 들어, 관리자 페이지에서 최신 로그인 로그를 확인하는 기능을 구현해볼 수 있습니다. 아래는 간단한 조회 예제입니다.
from .models import LoginLog
def login_log_view(request):
login_logs = LoginLog.objects.all().order_by('-login_time')[:10]
# 로그인 로그를 최신순으로 가져와서 처리하는 코드
pass
위의 코드에서는 LoginLog
모델에서 최신 로그인 로그를 가져오기 위해 all()
메서드를 호출하고, login_time
필드를 기준으로 내림차순으로 정렬하여 최신 로그들을 가져오도록 설정했습니다. 이후에는 해당 로그들을 원하는 방식으로 처리할 수 있습니다.
이렇게 Django REST framework에서 로그인 로그를 처리하는 방법을 알아보았습니다. 이러한 로그 처리는 사용자 활동 추적이나 보안 이슈 해결에 도움을 줄 수 있습니다. 더 많은 로그 처리 기능을 추가하고 싶다면 Django의 로깅 시스템을 활용하거나, 로그 분석 도구를 사용해 볼 수도 있습니다.