IsAuthenticated

유정원·2024년 8월 30일

python

목록 보기
13/21

IsAuthenticated는 Django REST Framework(DRF)에서 제공하는 기본적인 인증 클래스 중 하나로, API 뷰에 대한 접근 권한을 관리하는 데 사용됩니다. 이 클래스는 사용자가 인증된 상태인지 확인하고, 인증된 사용자만 뷰에 접근할 수 있도록 합니다.

동작 방식

  • 인증된 사용자: IsAuthenticated가 적용된 뷰는 인증된 사용자만 접근할 수 있습니다. 여기서 "인증된" 상태란, 사용자가 유효한 인증 토큰을 포함한 요청을 서버에 보낸 경우를 의미합니다. 일반적으로 로그인된 사용자나 유효한 토큰을 소지한 사용자가 여기에 해당합니다.
  • 미인증 사용자: 인증되지 않은 사용자가 이 뷰에 접근하려고 하면, DRF는 기본적으로 401 Unauthorized 응답을 반환합니다.

사용 예시

아래는 IsAuthenticated를 사용하여 API 뷰를 보호하는 예시입니다.

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated

class MyProtectedView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request):
        content = {'message': 'Hello, you are authenticated!'}
        return Response(content)

동작 설명

  • permission_classes = [IsAuthenticated]: 이 뷰에 대한 접근 권한을 설정합니다. IsAuthenticated를 사용하여 인증된 사용자만 이 뷰를 사용할 수 있도록 제한합니다.
  • 인증된 사용자의 요청: 인증된 사용자가 GET 요청을 보내면, "Hello, you are authenticated!" 메시지가 포함된 응답이 반환됩니다.
  • 미인증 사용자의 요청: 인증되지 않은 사용자가 이 뷰에 접근하려고 시도하면, DRF는 자동으로 401 Unauthorized 상태 코드를 응답합니다.

인증 방법

DRF에서 IsAuthenticated가 올바르게 작동하려면, DRF가 지원하는 인증 방법 중 하나를 설정해야 합니다. 가장 일반적으로 사용되는 인증 방법은 다음과 같습니다:

  • 세션 인증: Django의 기본 세션 기반 인증을 사용합니다. 사용자가 로그인하면 세션이 생성되며, 이후의 모든 요청에서 세션이 사용됩니다.
  • 토큰 인증: 사용자가 로그인할 때 서버가 토큰을 발급하고, 이후 요청에서 이 토큰을 사용하여 인증합니다. JWT(JSON Web Token) 기반 인증도 여기에 포함됩니다.
  • 기타: OAuth, API 키 인증 등도 가능합니다.

인증 설정

IsAuthenticated를 사용하려면 DRF의 설정 파일인 settings.py에서 기본 인증 방법을 설정해야 합니다.

# settings.py
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
}
  • DEFAULT_AUTHENTICATION_CLASSES: 기본 인증 클래스를 설정합니다. 여기서는 세션 인증과 토큰 인증을 모두 허용하고 있습니다.
  • DEFAULT_PERMISSION_CLASSES: 프로젝트 전역에서 기본으로 적용될 권한 클래스를 설정합니다. 여기서 IsAuthenticated를 설정하면, 모든 뷰에서 기본적으로 인증된 사용자만 접근할 수 있게 됩니다.

요약

  • IsAuthenticated는 Django REST Framework에서 인증된 사용자만 특정 API 뷰에 접근할 수 있도록 제한하는 권한 클래스입니다.
  • 미인증 사용자가 접근할 경우 401 Unauthorized 응답을 반환합니다.
  • IsAuthenticated를 사용하려면 DRF에서 인증 방법(Session, Token 등)을 설정해야 합니다.

이 클래스는 API의 보안을 강화하고, 특정 기능이나 데이터를 인증된 사용자에게만 제공할 때 매우 유용합니다.

0개의 댓글