AbstractUser
자체적으로 가지고있는 항목의 내용을 보면
라고 하는데 해석하면
관리자 호환 권한을 가진 전체 기능 사용자 모델을 구현하는 추상 기본 클래스입니다.
사용자 이름과 암호가 필요합니다. 다른 필드는 선택사항입니다.
라는 뜻이라고 한다
간단하게 알아서 회원인지 아닌지 구별하겠다 그런 것인듯 하다
그렇게 이를 가지고
UserModel
클래스에 상속시킨다
이놈은 웹을 만들 때 회원관리를 위해 유저의 정보를 db에 넣어야하는데 기본적으로 장고가 이 기능을 제공한다 하지만 깡통인데다 내부 값도 변경이 안되기에 이 강의에서는 사용자의 모델을 직접 만들고 거기에 필요한것만 가져올수 있게끔 AbstractUser
를 상속시켜준듯 하다
나머지들은 이미 가져온곳에 있는 기능들이기 때문이다
Django는 auth_user
를 사용자 관리 테이블로 지정해 놓았다
이제 user/models.py에 넣어준것처럼 이를 settings.py에 적용하여 쓰겠다고 알려줘야 한다
AUTH_USER_MODEL = 'user.UserModel'
이 줄을 추가해주면 기본 인증과정인 AUTH_USER_MODEL
를 user앱에 있는 UserModel로 사용하겠다는 뜻이다
이제 이를 db에 적용시켜주기 위해 migrate를 해준다
이제 이를 적용해보자
먼저 views.py에
from django.contrib.auth import get_user_model
이를 적어 가져온다
이제 이걸로 직접 만들어서 확장해준 모델을 잡을수 있는지 확인하는 방법이 있다.
# 설치
> pip install django-extensions
# settings.py에 app추가
'django_extensions',
# shell_plus 실행
> py manage.py shell_plus
# shell_plus 실행
>>> get_user_model()
<class 'user.models.UserModel'>
# shell_plus 종료방법
>>> Use exit() or Ctrl-Z plus Return to exit
이렇게 user앱 안에있는 models.py에 만든 UserModel로 연결되어있는걸 확인할 수 있다.
이것은 물론 settings.py에 그렇게 쓰겠다고 추가해주었기 때문이다
이제 이들을 migrate해주고 db를 확인해보면
이렇게 비밀번호가 암호화 된걸 확인할 수 있다
직접 찾아보았다
https://docs.djangoproject.com/en/3.0/topics/auth/default/#user-objects
이렇게 기본속성이 있기에 models에 상속받은것에 따로 적어주지 않은것이다
다음은 사용자를 만드는 코드이다
직접 만들수도 있다고 나온다
비밀번호에 관련한것을 살펴보자면
이렇게 나와있는데
https://docs.djangoproject.com/en/3.0/topics/auth/passwords/
이곳에 어떤식으로 암호화해서 저장하는지 나와있다
<algorithm>$<iterations>$<salt>$<hash>
만약 어제 만들었던것처럼 그렇게 자체모델을 구현해서 사용하면 암호가 그대로 노출된다는 것이다
오늘은 이만