🔐 Django 로그인 페이지 만들기
1️⃣ 로그인 정보 저장 방식: 세션 활용
✔️ 로그인 정보는 민감한 데이터이므로 브라우저에 저장하지 않고, 서버의 세션에 저장해야 합니다.
✔️ Django에서는 이를 위해 강력한 인증 시스템인 Django Authentication을 기본으로 제공합니다.
🔗 공식 문서 참고: Authentication views
2️⃣ URL 설정 - auth URL 포함시키기
# urls.py
from django.contrib import admin
from django.urls import path, include
from blog import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.blog_list, name='blog_list'),
path('<int:pk>/', views.blog_detail, name="blog_detail"),
# ✅ 로그인 URL 추가
path('accounts/', include('django.contrib.auth.urls')),
]
- django.contrib.auth.urls는 로그인, 로그아웃, 비밀번호 변경 등 기본 인증 뷰를 자동으로 제공합니다.
3️⃣ 로그인 템플릿 작성
경로: templates/registration/login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
<form method="POST">
{% csrf_token %}
{{ form.as_p }} <!-- 폼 데이터를 p 태그로 출력 -->
<button type="submit">로그인</button>
</form>
</body>
</html>
📌 접속 주소: http://127.0.0.1:8000/accounts/login/
4️⃣ 로그인 후 이동 경로 설정
# settings.py
LOGIN_REDIRECT_URL = '/' # 로그인 성공 시 이동할 경로
→ 루트 페이지(/)는 blog_list 뷰로 연결되어 있어, 로그인 후 블로그 목록 페이지로 이동됩니다.
5️⃣ CSRF 보안 이해
✔️ CSRF(Cross Site Request Forgery) 토큰은 Django에서 POST 요청 시 자동으로 검증됩니다.
✔️ settings.py의 MIDDLEWARE 설정에 포함되어 있으며, 모든 POST 요청에 csrf_token이 필요합니다.
{% csrf_token %} <!-- form 내부에 반드시 포함 -->
📌 미포함 시 에러 발생:
403 Forbidden: CSRF token missing or incorrect
6️⃣ 로그인 상태 확인 - 사용자명 출력
블로그 목록 템플릿에 다음을 추가하여 로그인된 사용자 확인 가능:
<!-- blog_list.html -->
<h3>{{ request.user.username }}</h3> <!-- 현재 로그인된 사용자 -->
✅ 확인 요약 체크리스트
항목 완료 여부
auth.urls 추가 | ✅ |
login.html 작성 | ✅ |
CSRF 토큰 포함 | ✅ |
LOGIN_REDIRECT_URL 설정 | ✅ |
로그인 후 사용자 확인 코드 추가 | ✅ |
💬 Django Authentication 시스템을 활용하면 로그인 기능을 빠르고 안전하게 구현할 수 있습니다. 사용자 인증을 시작하는 가장 간편한 방법이에요!
'Django' 카테고리의 다른 글
Chapter 3-6 Django 회원가입(SignUp) 페이지 만들기 (0) | 2025.05.06 |
---|---|
Chapter 3-5 Django 로그아웃 기능 만들기 (0) | 2025.05.06 |
Chapter 3-4 Django에서의 쿠키와 세션 이해 및 실습 (0) | 2025.05.06 |
Chapter 3-3 Django 블로그 상세 페이지 만들기 (0) | 2025.05.06 |
Chapter 3-2 Django 블로그 목록 페이지 만들기 (0) | 2025.05.06 |