[python] 파이썬 웹앱에서 회원가입 및 이메일 인증 구현하기

이번에는 파이썬으로 웹애플리케이션을 개발하면서 회원가입 시 이메일 인증을 구현하는 방법에 대해 알아보겠습니다. 회원가입 후 이메일 주소를 인증하는 것은 보안 및 신원 확인을 위해 중요한 단계입니다. 이를 통해 가입한 사용자의 신뢰성을 높일 수 있습니다.

1. Flask 웹앱 개발 환경 설정

먼저, Flask 웹앱을 개발할 환경을 설정해야 합니다. 아래는 간단한 Flask 애플리케이션의 예시입니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Welcome to our application!'

if __name__ == '__main__':
    app.run(debug=True)

2. 회원가입 및 이메일 인증 기능 추가

회원가입 폼을 생성하고 이메일을 통해 사용자를 인증하는 기능을 추가해보겠습니다. 다음은 간단한 예시 코드입니다.

from flask import Flask, request, render_template
from flask_mail import Mail, Message
import random

app = Flask(__name__)

app.config['MAIL_SERVER'] = 'smtp.example.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'your-email@example.com'
app.config['MAIL_PASSWORD'] = 'your-email-password'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True

mail = Mail(app)
otp = random.randint(1000, 9999)

@app.route('/signup', methods=['GET', 'POST'])
def signup():
    if request.method == 'POST':
        email = request.form['email']
        # 회원가입 로직
        msg = Message('이메일 인증 코드', sender='your-email@example.com', recipients=[email])
        msg.body = f'회원가입을 위한 이메일 인증 코드는 {otp}입니다.'
        mail.send(msg)
        return '이메일로 전송된 인증 코드를 입력해주세요.'
    return render_template('signup.html')

if __name__ == '__main__':
    app.run(debug=True)

3. 이메일 인증 코드 확인

사용자가 입력한 이메일 주소로 인증 코드가 전송되고, 사용자가 해당 코드를 입력하면서 이를 확인하는 기능을 추가합니다.

@app.route('/verify', methods=['POST'])
def verify():
    user_otp = request.form['otp']
    if int(user_otp) == otp:
        # 이메일 인증 성공 로직
        return '이메일 인증이 완료되었습니다.'
    return '잘못된 인증 코드입니다.'

위 예시 코드는 Flask 웹앱에서 간단하게 이메일 인증을 구현하는 방법을 설명하고 있습니다. 물론 이 예시 코드는 실제 서비스에 적용하기에는 보안상 이슈가 있을 수 있으니 반드시 보안적 측면을 고려하여 개발해야 합니다.