User Code Login 구현

김의석 ·2024년 5월 17일

Hello! Poko Ver.2

목록 보기
2/28

1. 배경

사용자에게 로그인 시 코드번호를 부여하고 회원가입 절차를 생략하여 사용자 등록 및 로그인의 과정을 간소화한다.

2. 요구사항과 핵심기능

  • PM 요구사항
  • 코드번호 생성
  • 초기 비밀번호 DB에서 동일하게 세팅
  • 첫 로그인 시, 비밀번호 변경 화면으로 이동
  • 비밀번호 변경 시, 해당 비밀번호로 로그인 시도 시에만 로그인 가능(= 초기 비밀번호는 로그인 불가)

3. 설계

1) Model

현재 회원가입-로그인 기능은 django-auth 모듈에서 제공하는 User Model을 사용하고있다!

(1) 코드번호는 admin에서 직접 생성한다.

  • 코드번호는 순차적으로 부여한다.
  • 담당교역자 : poko00
  • 부장교사 : poko01
  • 교사 : poko02~poko99
  • poko00~01은 관리자로 로그인 후 관리자 Dashboard로 이동
  • poko02~99는 반 교사로 로그인 후 반 Dashboard로 이동

(2) 초기 비밀번호는 admin에서 동일하게 설정한다.

  • 초기 비밀번호 : 0000 -> poko0000!

(3) 초기 비밀번호 첫 로그인 시 비밀번호 변경 화면으로 이동

  • 초기비밀 번호로 첫로그인 시 비밀번호 변경화면으로 이동
  • 비밀번호 변경 후 해당 반교사/관리자 Dashboard로 이동
  • 초기 비밀번호는 첫 로그인 외에 사용 불가

(4) 비밀번호 변경은 common app 내 views.py에서 ApiUdatePwd로 구현

2) FE

(1) 비밀번호 변경 html

3) BE

(1) middleware.py

현재 프로젝트에서 로그인 인증을 위해 사용되는 middleware

middleware 개발 중 모든 요청에 대한 초기비밀번호 식별 코드를 추가하는 것이 적절하지 않다고 판단하여 중단

  • 초기비밀 번호로 첫 로그인 - 비밀번호 변경 html - ApiUdatePwd - 로그인 화면 - 반교사/관리자 Dashboard

  • 비밀번호 변경 이후 로그인 - 반교사/관리자 Dashboard

(2) LoginView 확장을 통한 유효성 검사

로그인 프로세스 요약

  • auth/views.py -> class LoginView(RedirectURLMixin, FormView) 상속
  • form_valid 메서드를 오버라이드, 폼이 유효한 경우 auth_login 함수를 사용하여 사용자를 로그인시키고, 관리자/교사 URL로 리디렉션.

(3) CustomSetPasswordForm(비밀번호 재설정)

SetPasswordForm(django.contrib.auth.forms)을 상속하지 않고 초기비밀번호는 로그인 되지 않는다는 요청에 따라 기본 폼을 상속 받아 로그인 인증이 필요없는 상태에서 비밀번호 재설정이 가능하게 함.

  • 비밀번호 재설정 값에 대한 유효성 검사

4) 도식화

middleware.py 스케치

LoginView 확장을 통한 유효성 검사 스케치

profile
널리 이롭게

0개의 댓글