WEB/Django concept

[Django][Authentication System1] 인증 시스템, User Model 대체하기

bay07 2024. 4. 20. 12:54

▶ Authentication 인증

사용자가 자신이 누구인지 확인하는 것 

일종의 신원확인 

 

▶ Django Authentication System 인증 시스템

사용자 인증과 관련된 기능을 모아 놓은 시스템


장고가 기본적으로 제공하는 User model이 아닌 

우리가 직접 작성한 User model을 사용하기 위해서 

기존의 User model을 새롭게 대체한다. 

 

우리는 지금까지 별도의 User 클래스 정의 없이 

내장된 auth 앱에 작성된 User 클래스를 사용해싿. 

별도의 설정 없이 사용할 수 있어서 간편하지만,

개발자가 직접 수정할 수 없다는 문제가 생긴다 

 


AbstractUser 클래스를 상속받는 커스텀 User 클래스 작성

기존 User 클래스도 AbstractUser를 상속받기 때문에 
이렇게 하면
커스텀 User 클래스도 기존 User 클래스와 완전히 같은 모습을 가지게 된다. 
장고 프로젝트가 사용하는 기본 User 모델을 우리가 작성한 User 모델로 지정한다 
수정 전 기본 값은 auth.User이다. 
admin site에 대체한 User 모델을 등록한다 
기본 user 모델이 아니기 때문에 
등록하지 않으면 출력되지 않는다 

장고 프로젝트의 User을 나타내는 데 사용하는 모델을 지정한다 

AUTH_USER_MODEL은 프로젝트 중간에 변경할 수 없다 

그래서 처음에 미리 설정해줘야한다 

이미, 프로젝트가 진행되고 있는데 중간에 이걸 사용하고 싶을 경우

데이터 베이스를 초기화한 후 진행해야한다. 

 

장고는 새 프로젝트를 싲가하는 경우 (기본 User 모델이 충분하더라도)
커스텀 User 모델을 설정하는 것을 강력하게 권하고 있다. 

커스텀 User 모델은 기본 User 모델과 동일하게 작동하면서도
필요한 경우 나중에 맞춤으로 설정할 수 있기 때문이다. 

단, User 모델 대체 작업은 프로젝트의 모든 migrations 또는 
첫 migrate를 실행하기 전에 마쳐야한다. 

 


참고) 

관리자 권한과 함께 
완전한 기능을 가지고 있는 
User model을 구현하는 추상 기본클래스 
* Abstract base classes (추상 기본 클래스)
몇 가지 공통 정보를 여러 다른 모델에 넣을 때 사용하는 클래스 
데이터 베이스 테이블을 만드는 데 사용되지 않으며, 대신 다른 모델의 기본 클래스로 사용되는 경우
해당 필드가 하위 클래스의 필드에 추가된다. 

 

* 참고 

https://docs.python.org/3/library/abc.html

 

abc — Abstract Base Classes

Source code: Lib/abc.py This module provides the infrastructure for defining abstract base classes(ABCs) in Python, as outlined in PEP 3119; see the PEP for why this was added to Python. (See also ...

docs.python.org


* 공식 문서 

순서를 다 외우지 말고, 공식문서 따라가면서 진행해봐도 좋다 

https://docs.djangoproject.com/en/4.2/ref/settings/#auth-user-model

 

Settings | Django documentation

The web framework for perfectionists with deadlines.

docs.djangoproject.com