Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 명령어
- HTTP
- 해시맵
- bfs
- 해결
- Linux
- 주니어
- 백엔드
- spring
- 구현
- 스프링 부트
- 자료구조
- 스프링
- spring boot
- IntelliJ
- 코딩테스트
- HashMap
- docker
- 문자열
- 배열
- 도커
- 구름LEVEL
- 스타트업
- 프로그래머스
- Java
- dfs
- 이직
- 스프링부트
- 개발자
- 인텔리제이
Archives
- Today
- Total
마이의 개발 블로그
[Django] Auth0에서 이메일 인증 여부(email_verified) 체크하기 본문
반응형
현재 수행 중인 프로젝트는 Auth0라는 서비스를 연결하여 로그인 기능을 구현하고 있다.
개발요구사항 중 유저의 이메일 인증여부를 확인하여 인증이 아직 안 된 경우 메인화면 이외의 페이지에 접근을 제한해달라는 내용이 있어, Auth0에서 제공하는 email_verified 필드를 활용한 예제를 제시해보려고 한다.
email_verified 필드에 관한 설명은 Auth0 공식문서에서 살펴볼 수 있는데 간단히 요약해보면,
1) Auth0를 통해 회원가입 시, 입력된 주소로 이메일 인증링크를 발송함
2) 인증링크를 클릭하여 이메일 인증을 완료했는지 여부를 email_verified 필드를 통해 알 수 있음
3) email_verified 필드의 사용은 optional임
나는 유저가 로그인할 때마다 이메일 인증 여부를 업데이트하여 user 테이블에 저장하고, 진입이 제한되어야 하는 메뉴들에 접근 시 테이블에 저장된 email_verified 컬럼을 체크하는 decorator를 추가하여 사용하는 방식으로 이 필드를 활용했다.
절차
1. User 모델에 email_verified 필드 추가
class User(AbstractUser):
...
email_verified = models.BooleanField(default=False)
2. Auth0 클래스에서 로그인 후 user에 email_verified 리턴되도록 설정
class Auth0(BaseOAuth2):
def get_user_details(self, response):
...
return {
...
"email": payload["email"],
"email_verified": payload["email_verified"]
}
3. decorator 작성
# 이메일 인증여부 확인
def email_verification_required(function):
def wrap(request, *args, **kwargs):
if request.user.email_verified is True:
return function(request, *args, **kwargs)
messages.info(request, "이메일 인증이 필요합니다")
return redirect("somewhere")
return wrap
4. 진입을 제한하고자 하는 뷰에 decorator 추가
@login_required
@email_verification_required
def user_mypage(request):
...
반응형
'개발지식 > Django' 카테고리의 다른 글
[Python] 로그 파일 핸들러 2개(TimedRotatingFileHandler, RotatingFileHandler) 합쳐서 사용하는 방법 (0) | 2024.03.14 |
---|---|
[Django] import-export 모듈의 활용(관리자에 엑셀 업/다운로드 기능 설치) (0) | 2023.01.02 |
[Django] 뷰에서 폼의 모든 필드를 disabled로 변경하기 (0) | 2023.01.02 |
[Django] 빈 폼, 미완성 폼 출력 컨트롤하기 (empty_permitted) (0) | 2023.01.02 |
Comments