본문 바로가기
TTL/5주차 ~ 8주차 TIL (9.26 ~ 10.21)

2022-10-18 TIL (장고 회원가입 이메일 인증 기능)

by dev_junseok 2022. 10. 19.

오늘은 장고에서 회원가입 할 때, 이메일 인증을 하는 기능을 해보았다.

 

이메일 인증은 SMTP를 활용하는데 SMTP란,

# SMTP

간이 전자 우편 전송 프로토콜(Simple Mail Transfer Protocol, SMTP)은 인터넷에서 이메일을 보내기 위해 이용되는 프로토콜이다. 쉽게 말해, 간단히 두 메일 서버 간의 통신을 지원해주는 프로토콜로 우리는 SMTP를 통해 회원가입 관련 인증 메일을 전송할 것이다.

 

통신 프로토콜 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 통신 프로토콜은 신호 체계, 인증, 그리고

ko.wikipedia.org

 

먼저 setting에서 SMTP 설정을 해주도록 하겠다.

 

# settings.py

EMAIL_HOST = 'smtp.gmail.com' 		 # 메일 호스트 서버
EMAIL_PORT = '587' 			 # 서버 포트
EMAIL_HOST_USER = 'ID@gmail.com' 	 # 우리가 사용할 메일 서버
EMAIL_HOST_PASSWORD = 'pw'		 # 우리가 사용할 메일 서버 아이디
EMAIL_USE_TLS = True			 # TLS 보안 설정
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER	 # 응답 메일 관련 설정

위에는 gmail로 설정해 두었는데 gmail은 보안이 강화되어서 불가능하다. 네이버로 진행해 주면 된다.

 

이제 view에서 로그인 함수를 바꿔주고, 계정 활성화 함수를 생성해주자.

def login(request):
    if request.method == 'GET':
        user = request.user.is_authenticated
        if user:
            return redirect('/')
        else:
            return render(request, 'login.html')
    elif request.method == 'POST':
        email = request.POST.get('email')
        password = request.POST.get('password')
        
        user = authenticate(request, email=email , password=password)
        if user is not None:
            loginsession(request, user)
            return redirect('/')
        else:
            return render(request, 'login.html', {'error':'이메일 혹은 패스워드를 확인 해 주세요!'})
            
    
    def activate(request, uidb64, token):
    try:
        uid = force_str(urlsafe_base64_decode(uidb64))
        user = User.objects.get(pk=uid)
    except(TypeError, ValueError, OverflowError, User.DoesNotExsit):
        user = None
    if user is not None and account_activation_token.check_token(user, token):
        user.is_active = True
        user.save()
        auth.login(request, user)
        return redirect("/")
    else:
        return render(request, 'home.html', {'error' : '계정 활성화 오류'})

이제 네이버에서 살짝만 설정해주면 끝이다.

네이버 메일 - 왼쪽 내 메일함에 있는 톱니바퀴를 클릭하자

클릭하면 나오는POP3/IMTP 설정에서 다음과 같이 바꿔주자.

이제 회원가입 하면 인증메일이 날라오고 누르면 회원가입이 완료된다!