[중급편] 장고 기본인증 뽀개기 (완료)

본 코스는 구독 VOD로 제공됩니다. (구독 확인을 위해 회원가입/로그인이 필요합니다. 구독정책은 구독정책 페이지에서 확인하실 수 있습니다.)

장고에서는 기본 앱인 django.contrib.auth를 통해 인증 시스템 (Authentication)과 허가/퍼미션 시스템 (Authorization)을 제공하고 있습니다.

본 코스를 통해 django.contrib.auth 앱에서 지원하는 다양한 기능에 대해서 살펴보고 이를 최대한 활용할 수 있는 방법에 대해서 다뤄보겠습니다.

본 코스를 수강하시기에 앞서 장고 기본편 코스부터 먼저 이수하시기를 권장드립니다.

인증을 구현하기에 앞서, 기본적인 장고 프로젝트로서 블로그를 간단하게나마 구성해보겠습니다.

17:04 (1회 시청)

django.contrib.auth 앱을 최대한 활용하여 로그인을 처리하는 방법에 대해서 살펴보겠습니다. 그리고 관련 View/Form과 settings에 대해서도 살펴보겠습니다.

  1. AuthenticationForm
  2. LoginView
  3. 관련 settings
    1. LOGIN_URL
    2. LOGIN_REDIRECT_URL

23:43 (1회 시청)

각 유저별 정보를 보여주기 위한 목적으로서 프로필 페이지를 구현하실 수 있습니다.

만약 프로필페이지가 필요없으시다면, settings.LOGIN_REDIRECT_URL 기본값으로서 /accounts/profile/ 주소가 할당되어있기에 해당 설정값을 다른 설정값으로 변경하시기를 권장드립니다.

위 값을 변경하지 않으시면, 유저 로그인 시에 next인자가 지정되어있지 않을 경우, 유저는 프로필 페이지로 이동을 하게 되고 404응답을 받게 되겠죠?

07:35 (1회 시청)

django.contrib.auth 앱을 최대한 활용하여 로그아웃을 처리하는 방법에 대해서 살펴보겠습니다. 그리고 관련 View와 settings에 대해서도 살펴보겠습니다.

  1. LogoutView
  2. 관련 settings
    1. LOGOUT_REDIRECT_URL

05:42 (1회 시청)

django.contrib.auth를 통해 인증에 필요한 거의 모든 기능들이 제공되고 있습니다. 그런데 회원가입에 대해서는 View는 제공되지 않고, Form만 제공되고 있습니다. 이 Form을 통해 회원가입을 구현해보겠습니다.

  1. UserCreationForm 살펴보기
  2. 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회 시청)

유저가 가입했을 때, 가입환영 이메일을 통해 유저에게 환영 메세지와 다양한 혜택을 알려보세요. 본 에피소드에서는 다음 내용을 다룹니다.

  1. 유저가 가입한 시점에 대한 탐지하는 방법
  2. 장고 이메일 라이브러리를 통해 이메일 보내는 방법
  3. 장고 써드파티 이메일 라이브러리
  4. 파이썬 써드파일 이메일 라이브러리

18:33 (1회 시청)

시스템에 로그인을 하기 위해서는 유저는 필히 아이디와 암호를 기억해야합니다. 그런데 만약 서비스에서 유저의 로그인이 몇 달에 1번 꼴로 적은 시스템이라면 유저는 그 암호를 기억하기 더더욱 힘들 것입니다. 이럴 경우 유저에게 email만을 입력받고, email을 통한 인증을 통해 로그인을 제공한다면 유저는 암호를 기억해야한다는 압박에서 벗어날 수 있을 것입니다.

현재 PyCon Korea 서비스가 이렇게 구성되어있습니다.

저는 django.contrib.auth.views.PasswordResetView 뷰를 활용한 로그인을 구현해봤구요. 이와 더불어 pyconkr 사이트에서의 이메일/URL을 통한 로그인 코드 리뷰도 같이 살펴보겠습니다.

17:28 (1회 시청)

로그인 한 유저에 한해, 웹 상에서 암호를 변경하는 기능을 구현해보겠습니다.

django.contrib.auth에서 기본 제공해주는 다음 뷰를 통해 구현하실 수 있습니다.

  1. PasswordChangeView
  2. PasswordChangeDoneView

20:15 (1회 시청)

유저가 암호를 까먹었을 경우, 암호를 새로이 변경할 수 있는 방법을 제공해야 합니다. 흔히 이메일을 통해 암호 재설정 링크를 전달하는 방식을 많이 씁니다. 이에 대한 구현을 살펴보겠습니다.

django.contrib.auth에서 기본 제공해주는 다음 뷰를 통해 구현하실 수 있습니다.

  1. PasswordResetView
  2. PasswordResetDoneView
  3. PasswordResetResetConfirmView
  4. 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회 시청)

지난 #1 에피소드에 이어 영상이 진행됩니다. :)

21:36 (1회 시청)

유저가 로그인을 하면 로그인 정보는 세션에 저장합니다. 세션 처리를 통해 중복 로그인을 막는 방법에 대해서 살펴보겠습니다.

23:42 (1회 시청)

프로젝트 User 모델을 변경했는 데, SignupForm에서는 기본 설정인 auth.User 모델을 참조하고 있습니다. 이에 대한 대응을 다뤄보겠습니다.

03:34 (1회 시청)

현재 프로필 조회 기능만 있는 데요. 프로필 수정 기능을 구현해보겠습니다.

08:55 (1회 시청)

이전까지는 회원 가입 후에서만 별도로 프로필을 입력/수정해야만 했지만, 회원가입 시에 프로필 정보를 받을 수 있도록 개선해보겠습니다.

06:08 (1회 시청)

현재 프로젝트 구성으로, 로그인 세션이 살아있을 때 다시 로그인을 하면 IntegrityError가 발생합니다. 이 오류가 발생하는 이유와 그에 대한 대응방법을 다뤄보겠습니다.

15:34 (1회 시청)

이메일을 등록하시면 쓰신 댓글에 대한 답글이 등록되면 이메일로 알려드립니다. 이메일은 스팸함을 꼭 확인해주세요.