2023.04.05(Django AbstractUser)

Vinyl Stage·2023년 4월 5일
0

개발일지

목록 보기
24/42

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>

만약 어제 만들었던것처럼 그렇게 자체모델을 구현해서 사용하면 암호가 그대로 노출된다는 것이다

오늘은 이만

profile
Life is Art

0개의 댓글