Django에서 사용자 인증 및 권한 부여 구현
사용자 인증은 사용자가 안전하게 로그인하고 계정에 액세스할 수 있도록 보장합니다. 반면 권한 부여는 인증된 사용자가 수행할 수 있는 작업을 결정합니다. Django는 이러한 목적을 위해 쉽게 통합하고 확장할 수 있는 강력한 인증 시스템을 제공합니다.
기본 인증 시스템 설정
Django의 기본 인증 시스템은 기본적으로 구성에 포함되어 있습니다. 다음 앱이 settings.py
의 INSTALLED_APPS
섹션에 나열되어 있는지 확인하세요.
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
필요한 테이블을 설정하기 위해 데이터베이스를 마이그레이션하세요.
python manage.py migrate
사용자 모델 생성
Django는 기본 사용자 모델을 제공하지만 필요한 경우 사용자 정의 모델을 만들 수 있습니다. 기본 모델을 사용하려면:
from django.contrib.auth.models import User
# Creating a new user
user = User.objects.create_user(username='johndoe', password='securepassword')
user.email = 'johndoe@example.com'
user.save()
사용자 정의 사용자 모델을 생성하려면 models.py
을 수정하세요.
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
phone_number = models.CharField(max_length=15, blank=True, null=True)
settings.py
에서 AUTH_USER_MODEL
설정을 업데이트합니다.
AUTH_USER_MODEL = 'yourapp.CustomUser'
사용자 로그인 및 로그아웃 처리
Django는 로그인 및 로그아웃을 위한 내장 뷰를 제공합니다. 다음 URL을 urls.py
에 추가합니다.
from django.urls import path
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
registration/login.html
라는 간단한 로그인 템플릿을 만듭니다.
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Log in</button>
</form>
권한을 사용하여 액세스 제한
Django는 액세스를 제한하기 위한 권한 클래스를 제공합니다. 뷰에서 사용하려면:
from django.contrib.auth.decorators import login_required, permission_required
@login_required
def dashboard(request):
return render(request, 'dashboard.html')
@permission_required('yourapp.can_edit')
def edit_page(request):
return render(request, 'edit_page.html')
권한은 Django 관리자나 셸을 통해 할당할 수 있습니다.
from django.contrib.auth.models import User, Permission
user = User.objects.get(username='johndoe')
permission = Permission.objects.get(codename='can_edit')
user.user_permissions.add(permission)
결론
Django의 인증 및 권한 부여 시스템은 웹 애플리케이션을 보호하기 위한 견고한 기반을 제공합니다. 매우 사용자 정의가 가능하여 특정 요구 사항을 충족하도록 기능을 확장할 수 있습니다. 이 시스템을 사용하면 프로젝트에서 사용자 계정, 역할 및 권한을 쉽게 관리할 수 있습니다.