[중급편] 장고 기본인증 뽀개기 (완료)
본 코스는 구독 VOD로 제공됩니다. (구독 확인을 위해 회원가입/로그인이 필요합니다. 구독정책은 구독정책 페이지에서 확인하실 수 있습니다.)
장고에서는 기본 앱인 django.contrib.auth
를 통해 인증 시스템 (Authentication)과 허가/퍼미션 시스템 (Authorization)을 제공하고 있습니다.
본 코스를 통해 django.contrib.auth
앱에서 지원하는 다양한 기능에 대해서 살펴보고 이를 최대한 활용할 수 있는 방법에 대해서 다뤄보겠습니다.
본 코스를 수강하시기에 앞서 장고 기본편 코스부터 먼저 이수하시기를 권장드립니다.
- 소스코드 저장소 : github.com/allieus/askdjango-s2-auth
django.contrib.auth
앱을 최대한 활용하여 로그인을 처리하는 방법에 대해서 살펴보겠습니다. 그리고 관련 View/Form과 settings에 대해서도 살펴보겠습니다.
AuthenticationForm
LoginView
- 관련 settings
LOGIN_URL
LOGIN_REDIRECT_URL
23:43 (1회 시청)
각 유저별 정보를 보여주기 위한 목적으로서 프로필
페이지를 구현하실 수 있습니다.
만약 프로필페이지가 필요없으시다면, settings.LOGIN_REDIRECT_URL
기본값으로서 /accounts/profile/
주소가 할당되어있기에 해당 설정값을 다른 설정값으로 변경하시기를 권장드립니다.
위 값을 변경하지 않으시면, 유저 로그인 시에 next
인자가 지정되어있지 않을 경우, 유저는 프로필 페이지로 이동을 하게 되고 404
응답을 받게 되겠죠?
07:35 (1회 시청)
django.contrib.auth
앱을 최대한 활용하여 로그아웃을 처리하는 방법에 대해서 살펴보겠습니다. 그리고 관련 View와 settings에 대해서도 살펴보겠습니다.
LogoutView
- 관련 settings
LOGOUT_REDIRECT_URL
05:42 (1회 시청)
django.contrib.auth
를 통해 인증에 필요한 거의 모든 기능들이 제공되고 있습니다. 그런데 회원가입에 대해서는 View
는 제공되지 않고, Form
만 제공되고 있습니다. 이 Form을 통해 회원가입을 구현해보겠습니다.
- UserCreationForm 살펴보기
- FBV/CBV 구현
14:20 (1회 시청)
특정 유저에 대한 정보를 User
모델과 1:1
관계에 있는 Profile
모델을 통해 저장을 하려 합니다. 회원가입과 동시에 관련 Profile
을 만드는 방법에 대해서 살펴보겠습니다.
Profile
모델에 대한 DB테이블을 생성하는 마이그레이션을 수행함과 동시에, migrations.RunPython
을 통해 모든 User
에 대해 Profile
을 생성하는 “커스텀 마이그레이션 코드”도 같이 작성해보겠습니다.
16:05 (1회 시청)
회원가입을 할 때, 회원가입에 필요한 정보는 로그인 시에 필요한 정보와 겹칩니다. 그리고 회원가입 직후에 로그인을 시도하게 될 텐데, 회원가입을 하면 즉시 로그인 처리까지 해준다면
, 얼마나 편리할까요? 함께 살펴보시죠. :D
07:40 (1회 시청)
로그인/로그아웃 루틴에서는 next GET 인자
를 처리하고 있습니다. 그렇기에 로그인/로그아웃 후에 페이지 위치에 맞게 적절히 페이지 이동을 하고 있습니다.
우리가 직접 만든 회원가입 뷰
에서도 next 인자
를 처리토록 하여, 보다 자연스러운 회원가입 처리를 구현해보겠습니다.
06:27 (1회 시청)
시스템 설계에 따라 로그인 아이디로서 이메일
을 쓰고 싶을 경우가 있습니다. 이에 대한 구현방법에 대해서 살펴보겠습니다.
11:34 (1회 시청)
유저가 가입했을 때, 가입환영 이메일을 통해 유저에게 환영 메세지와 다양한 혜택을 알려보세요. 본 에피소드에서는 다음 내용을 다룹니다.
- 유저가 가입한 시점에 대한 탐지하는 방법
- 장고 이메일 라이브러리를 통해 이메일 보내는 방법
- 장고 써드파티 이메일 라이브러리
- 파이썬 써드파일 이메일 라이브러리
18:33 (1회 시청)
시스템에 로그인을 하기 위해서는 유저는 필히 아이디와 암호를 기억해야합니다. 그런데 만약 서비스에서 유저의 로그인이 몇 달에 1번 꼴로 적은 시스템이라면 유저는 그 암호를 기억하기 더더욱 힘들 것입니다. 이럴 경우 유저에게 email
만을 입력받고, email
을 통한 인증을 통해 로그인을 제공한다면 유저는 암호를 기억해야한다는 압박
에서 벗어날 수 있을 것입니다.
현재 PyCon Korea 서비스가 이렇게 구성되어있습니다.
저는 django.contrib.auth.views.PasswordResetView
뷰를 활용한 로그인을 구현해봤구요. 이와 더불어 pyconkr 사이트에서의 이메일/URL을 통한 로그인 코드 리뷰도 같이 살펴보겠습니다.
17:28 (1회 시청)
로그인 한 유저
에 한해, 웹 상에서 암호를 변경하는 기능을 구현해보겠습니다.
django.contrib.auth
에서 기본 제공해주는 다음 뷰를 통해 구현하실 수 있습니다.
- PasswordChangeView
- PasswordChangeDoneView
20:15 (1회 시청)
유저가 암호를 까먹었을 경우, 암호를 새로이 변경할 수 있는 방법을 제공해야 합니다. 흔히 이메일을 통해 암호 재설정 링크
를 전달하는 방식을 많이 씁니다. 이에 대한 구현을 살펴보겠습니다.
django.contrib.auth
에서 기본 제공해주는 다음 뷰를 통해 구현하실 수 있습니다.
- PasswordResetView
- PasswordResetDoneView
- PasswordResetResetConfirmView
- PasswordResetCompleteView
28:36 (1회 시청)
django.contrib.auth
앱에서는 기본 User
모델을 제공해주고 있습니다. 이 모델에 유저에 대한 정보를 담습니다. 미리 정의된 모델이기에 지원되는 필드는 몇 개 없습니다.
장고에서는 User
모델을 변경하는 기능을 지원해주고 있습니다. 본 기능을 통해 필드를 추가한다거나, User
모델 로직을 변경하실 수도 있습니다.
22:42 (1회 시청)
User
모델에 대해서 기본 Admin이 적용이 되어있는 데요. 이를 커스텀 지정하는 방법에 대해서 살펴보고, 좀 더 편리하게 유저를 관리하는 Case에 대해서 살펴보겠습니다.
19:24 (1회 시청)
장고의 Authorization 시스템으로서 Permission
모델이 제공되고 있습니다. Permission 모델을 활용하여, 각 View에 대한 접근제한을 하는 방법에 대해서 살펴보겠습니다.
15:57 (1회 시청)
유저가 로그인을 하면 로그인 정보는 세션에 저장합니다. 세션 처리를 통해 중복 로그인
을 막는 방법에 대해서 살펴보겠습니다.
23:42 (1회 시청)
프로젝트 User 모델을 변경했는 데, SignupForm에서는 기본 설정인 auth.User
모델을 참조하고 있습니다. 이에 대한 대응을 다뤄보겠습니다.
03:34 (1회 시청)
이전까지는 회원 가입 후에서만 별도로 프로필을 입력/수정해야만 했지만, 회원가입 시에 프로필 정보를 받을 수 있도록 개선해보겠습니다.
06:08 (1회 시청)
현재 프로젝트 구성으로, 로그인 세션이 살아있을 때 다시 로그인을 하면 IntegrityError
가 발생합니다. 이 오류가 발생하는 이유와 그에 대한 대응방법을 다뤄보겠습니다.
15:34 (1회 시청)