[python] Django에서 사용자 인증과 권한 관리

Django는 사용자 인증 및 권한 관리를 손쉽게 구현할 수 있는 강력한 기능을 제공합니다. 이 기능을 사용하여 웹 애플리케이션에 로그인, 로그아웃, 사용자 프로필 관리, 그리고 사용자 권한 설정 등을 쉽게 구현할 수 있습니다.

사용자 인증 구현

Django에서 사용자 인증을 구현하는 것은 매우 간단합니다. django.contrib.auth 모듈을 사용하여 사용자 및 사용자 그룹을 관리할 수 있습니다.

from django.contrib.auth.decorators import login_required
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponseRedirect
from django.urls import reverse

def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username=username, password=password)
        if user:
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect(reverse('index'))
            else:
                return HttpResponse("Your account is disabled.")
        else:
            return HttpResponse("Invalid login details.")
    else:
        return render(request, 'login.html', {})

@login_required
def user_logout(request):
    logout(request)
    return HttpResponseRedirect(reverse('index'))

사용자 권한 관리

Django에서는 다양한 수준의 권한을 쉽게 관리할 수 있습니다. @permission_required 데코레이터를 사용하여 특정 뷰나 함수에 대한 접근 권한을 설정할 수 있습니다.

from django.contrib.auth.decorators import permission_required

@permission_required('myapp.can_publish')
def my_view(request):
    ...

그룹 기반 권한 관리

Django는 그룹 기반 권한 관리를 지원하여 사용자 그룹에 대해 특정 권한을 부여할 수 있습니다.

from django.contrib.auth.models import Group
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from myapp.models import MyModel

# 그룹 생성
group = Group.objects.create(name='MyGroup')

# 모델 권한 추가
content_type = ContentType.objects.get_for_model(MyModel)
permission = Permission.objects.create(
    codename='can_edit_mymodel',
    name='Can edit MyModel',
    content_type=content_type,
)
group.permissions.add(permission)

위의 예제에서 MyModel은 실제 모델명으로 대체되어야 합니다.

Django를 사용하여 사용자 인증과 권한 관리를 구현하는 방법에 대해 간략하게 살펴보았습니다. Django의 강력한 기능을 통해 웹 애플리케이션의 보안 및 권한 관리를 쉽게 구현할 수 있습니다.

참고 자료: