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'] # 안 에는 자신 이 쓴 인증 류 로 바 뀌 었 다.형식 은 패키지 이름,파일 이름,클래스 이름 이 어야 합 니 다.
이것으로 완성 되 었 다.
요약:(핸드폰 번호+인증 코드 를 예 로 들 면)
자,이상 이 이 글 의 모든 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.