회원 가입
User 객체를 Create 하는 과정
UserCreationForm()
회원 가입 시 사용자 입력 데이터를 받는 built-in ModelForm
get_user_model()
'현재 프로젝트에서 활성화된 사용자 모델 (active user model)'을 반환하는 함수
user객체를 직접적으로 가져오지 않음
회원 탈퇴
User 객체를 Delete 하는 과정
회원정보 수정
User 객체를 Update 하는 과정
UserChangeForm()
회원정보 수정 시 사용자 입력 데이터를 받는 built-in ModelForm
UserChangeForm 사용 시 문제점
User 모델의 모든 정보들 (fields)까지 모두 출력되어 수정이 가능하기 때문에 일반 사용자들이 접근해서는 안되는 정보는 출력하지 않도록 해야 함
→ CustomUserChangeForm에서 접근 가능한 필드를 다시 조정
비밀번호 변경
인증된 사용자의 Session 데이터를 Update 하는 과정
PasswordChangeForm()
비밀번호 변경 시 사용자 입력 데이터를 받는 built-in Form
암호 변경 시 세션의 무효화
비밀번호가 변경되면 기존 세션과의 회원 인증 정보가 일치하지 않게 되어 버려 로그인 상태가 유지되지 못하고 로그아웃 처리됨
비밀번호가 변경되면서 기존 세션과의 회원 인증 정보가 일치하지 않기 때문
update_session_auth_hash(request, user)
암호 변경 시 세션 무효화를 막아주는 함수
→ 암호가 변경되면 새로운 password의 Session Data로 기존 session을 자동으로 갱신
로그인 사용자에 대해 접근을 제한하는 2가지 방법
is_authenticated 속성 (attribute)
login_required 데코레이터 (decorator)
is_authenticated
사용자가 인증 되었는지 여부를 알 수 있는 User model의 속성
→ 모든 User 인스턴스에 대해 항상 True인 읽기 전용 속성이며, 비인증 사용자에 대해서는 항상 False
login_required
인증된 사용자에 대해서만 view 함수를 실행시키는 데코레이터
→ 비인증 사용자의 경우 /accounts/login 주소로 redirect 시킴