Django 사용자 정의 로그 인 인증 예시 코드

머리말
가끔 은 Django 가 가지 고 있 는 사용자 로그 인 인증 이 우리 의 수 요 를 만족 시 키 지 못 할 때 가 있 습 니 다.예 를 들 어 저 는 사용자 이름+비밀번호 로 로그 인 하고 싶 지 않 습 니 다.저 는 핸드폰 번호+인증 코드 로 로그 인 하고 싶 습 니 다.그러면 우리 가 Django 가 가지 고 있 는 인증 을 수정 해 야 합 니 다.
Django 는 기본적으로 사용자 인증 을 사용 하 는 것 은 ModelBackend 입 니 다.이 종 류 는 바로 우리 가 착수 해 야 할 부분 입 니 다.ModelBackend 에는 authenticate 방법 이 있 습 니 다.이 방법 은 로그 인 할 때 사용자 인증 방법 입 니 다.우리 가 고 쳐 야 할 것 은 바로 이 방법 이다.
먼저 원본 코드 를 보고 인증 논 리 를 이해 하 세 요.

15-16 줄 에서 인증 용 사용자 이름 필드 를 먼저 가 져 옵 니 다.기본 값 은 username 입 니 다.User model 에서 USERNAME 을 다시 정의 하면FIELD,USERNAME_FIELD = 'mobile' 으로 바 뀌 면 지금 은 핸드폰 번호 로 로그 인 합 니 다.
18-22 줄 은 username 에 따라 user 대상 을 가 져 오 는 것 입 니 다.이 user 가 없 으 면 비밀번호 hasher 를 한 번 만 듭 니 다.
24-25 줄 은 사용 자 를 가 져 온 후에 사용자 가 보 낸 비밀번호 가 데이터베이스 에 있 는 것 과 일치 하 는 지,그리고 이 사용자 가 로그 인 권한 이 있 는 지 검증 하 는 것 입 니 다.검증 을 모두 통과 한 후에 user 를 되 돌려 줍 니 다.그렇지 않 으 면 종료 하고 아무것도 되 돌려 주지 않 습 니 다.
인증 의 논 리 를 깨 닫 고 수정 하기 시 작 했 습 니 다.먼저 하나의 종 류 를 새로 만 들 고 ModelBackend 를 계승 한 다음 에 authenticate 방법 을 다시 씁 니 다.예 를 들 어 위 에서 언급 한 핸드폰 번호+인증 코드 로 바 꾸 는 방식 은 다음 과 같이 바 꾸 면 됩 니 다.

다만 약간의 수정 을 했 을 뿐 24 줄 의 암호 인증 을 인증 코드 인증 으로 바 꾸 었 습 니 다.이 password 필드 는 사용자 의 암호 가 아 닌 인증 코드 를 저장 하 는 데 사 용 됩 니 다.다른 논 리 는 변 하지 않 았 다.
여기 가 바 뀌 면 User model 에 check 를 추가 해 야 합 니 다.verify_code 이 방법,그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다.클래스 변 수 를 수정 해 야 합 니 다 USERNAMEFIELD='mobile',그렇지 않 으 면 username 으로 인증 하고 구체 적 인 실현 논 리 는 자신의 실제 상황 에 따라 안의 논 리 를 보 여주 지 않 습 니 다.
자,사용자 인증 이 바 뀌 었 습 니 다.그리고 가장 중요 한 단 계 는 settings.py 에 이러한 설정 을 추가 합 니 다.
AUTHENTICATION_BACKENDS = ['common.backends.CustomModelBackends']  # 안 에는 자신 이 쓴 인증 류 로 바 뀌 었 다.형식 은 패키지 이름,파일 이름,클래스 이름 이 어야 합 니 다.
이것으로 완성 되 었 다.
요약:(핸드폰 번호+인증 코드 를 예 로 들 면)
  • 사용자 정의 모델 백 엔 드 클래스 를 새로 만 들 고 authenticate 방법 을 다시 쓰 며 자신의 실제 수요 에 따라 인증 논 리 를 씁 니 다.
  • 사용자 모델 에 인증 코드 를 추가 하 는 방법.
  • User model 에서 클래스 변 수 를 변경 합 니 다 USERNAMEFIELD 는 mobile 입 니 다.
  • settings.py 에 설정 을 추가 합 니 다:
  • AUTHENTICATION_BACKENDS = ['common.backends.CustomModelBackends']
    자,이상 이 이 글 의 모든 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기