Django에서의 사용자 증명

Django는 사용자 인증 시스템을 지원합니다. 이 시스템은 사용자 계정, 그룹, 권한과 쿠키 기반의 사용자 세션을 다룹니다. 문서의 이 섹션은 기본 구현이 어떻게 별도 설정 없이(out of the box) 작동하는지를 설명하고, 어떻게 프로젝트의 요구조건에 맞도록 Django 인증을 확장하고 커스터마이징하는지 또한 설명합니다.

개요

Django authentication 시스템은 인증과 권한부여를 모두 처리합니다. 요약하자면, 인증은 사용자가 누구인지를 판별하고, 권한부여는 인증된 사용자가 어떤 일을 할 수 있는지 결정합니다. 여기에 인증이라는 개념이 두 작업에 모두 쓰이게 됩니다.

Auth 시스템은 다음과 같이 구성되어 있습니다:

  • 사용자
  • 권한: 사용자가 특정 작업을 수행할 수 있는지 여부를 지정하는 이진 (yes/no) 플래그
  • 그룹: 라벨과 권한을 둘 이상의 사용자에게 적용하는 일반적인 방법
  • A configurable password hashing system
  • Forms and view tools for logging in users, or restricting content
  • A pluggable backend system

The authentication system in Django aims to be very generic and doesn’t provide some features commonly found in web authentication systems. Solutions for some of these common problems have been implemented in third-party packages:

  • Password strength checking
  • Throttling of login attempts
  • Authentication against third-parties (OAuth, for example)
  • Object-level permissions

설치

Authentication support is bundled as a Django contrib module in django.contrib.auth. By default, the required configuration is already included in the settings.py generated by django-admin startproject, these consist of two items listed in your INSTALLED_APPS setting:

  1. 'django.contrib.auth' contains the core of the authentication framework, and its default models.
  2. 'django.contrib.contenttypes' is the Django content type system, which allows permissions to be associated with models you create.

and these items in your MIDDLEWARE setting:

  1. SessionMiddleware manages sessions across requests.
  2. AuthenticationMiddleware associates users with requests using sessions.

With these settings in place, running the command manage.py migrate creates the necessary database tables for auth related models and permissions for any models defined in your installed apps.

Back to Top