실습 설명
1. username 대신 email로 로그인을 할 수 있도록 바꿔 주세요. 이제 username은 사용하지 않을 거니까 유저 모델의 __str__ 메소드도 이메일을 리턴하도록 바꿔 주세요.
2. 브라우저를 닫아도 항상 유저를 기억하도록 설정해 주세요.
풀이
1. username 대신 email로 로그인을 할 수 있도록 바꿔 주세요.
이제 username은 사용하지 않을 거니까 유저 모델의 __str__ 메소드도 이메일을 리턴하도록 바꿔 준다.
이메일로 로그인을 하려면 아래 내용들을 구현해야 하는데, 인증(authentication) 방법을 이메일로 바꾼다.
회원가입 시 이메일 입력을 필수로 한다.
유저네임은 입력받지 않아도 된다.
이걸 세팅 3개로 해결할 수 있다.
# Auth settings
# Auth settings
...
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
아주 간편하다.
그리고 이제 유저네임 대신 이메일을 사용하니까 유저 모델의 __str__ 메소드도 바꿔 준다.
class User(AbstractUser):
def __str__(self):
return self.email
이메일 필드를 리턴해 주면 된다.
index.html 파일에서 환영 문구를 아래처럼 바꿨다.
podomarket/index.html
<!-- Before -->
<p>안녕하세요 {{ user }}님, 회원님의 이메일은 {{ user.email }}입니다.</p>
<!-- After -->
<p>안녕하세요 {{ user }}님!</p>
이제 {{ user }} 부분에도 유저의 이메일이 출력돼서 이메일이 두 번 출력되기 때문이다.
2. 브라우저를 닫아도 항상 유저를 기억하도록 설정해 주세요.
유저를 항상 기억하려면 ACCOUNT_SESSION_REMEMBER를 True로 설정해 주면 된다.
# Auth settings
...
ACCOUNT_SESSION_REMEMBER = True
그러면 브라우저를 닫았다 켜도 유저를 기억하는데, 세션 쿠키가 만료되면 로그아웃이 된다는 점을 잘 기억해야 한다.
세션 쿠키의 유효시간은 SESSION_COOKIE_AGE로 정할 수 있다. (SESSION_COOKIE_AGE의 단위는 '초')
예: 유효시간 1시간(3600초)으로 설정. 1시간이 지나면 자동으로 쿠키가 만료돼서 로그인이 필요함.
settings.py
SESSION_COOKIE_AGE = 3600
'BackEnd > Django 유저 기능 구현하기' 카테고리의 다른 글
[유저 기능과 django-allauth 패키지] 포도마켓: 필드추가하기 (0) | 2023.04.11 |
---|---|
[유저 기능과 django-allauth 패키지] 포도마켓: 홈페이지 만들기 (2) | 2023.04.06 |
[유저 기능과 django-allauth 패키지] 포도마켓: 프로젝트 시작하기 (0) | 2023.04.06 |
[유저 기능과 django-allauth 패키지] django-allauth, 유저 모델 퀴즈 (0) | 2023.04.06 |
[유저 기능과 django-allauth 패키지] 패키지 vs 앱 (0) | 2023.04.06 |