[python] 웹 서버에 회원가입 기능 추가하기

이번 포스트에서는 Python을 사용하여 간단한 웹 서버에 회원가입 기능을 추가하는 방법을 알아보겠습니다.

목차

  1. 개요
  2. 필요한 패키지 설치
  3. SQLite 데이터베이스 설정
  4. 회원가입 API 구현
  5. 웹 서버에 API 연결
  6. 추가적인 보안 고려 사항
  7. 참고 자료

개요

일반적인 회원가입 기능은 사용자가 웹 사이트에 가입을 요청하면, 사용자의 정보를 데이터베이스에 저장하고 인증을 위한 유저 세션을 생성하는 것입니다.

이를 위해 Python에서는 웹 프레임워크인 Flask를 사용할 수 있습니다. Flask는 간단하고 가벼운 웹 애플리케이션 프레임워크로, 쉽게 웹 서버를 생성하고 API를 구현하는데 유용합니다.

이제 필요한 패키지를 설치해보겠습니다.

필요한 패키지 설치

회원가입 기능을 추가하기 위해 Flask와 SQLite 데이터베이스를 사용할 예정입니다. 따라서 다음 명령어로 필요한 패키지를 설치합니다.

pip install flask
pip install flask_sqlalchemy

또한, Flask에서 제공하는 데이터베이스 ORM인 SQLAlchemy를 사용하여 데이터베이스와의 연결을 관리할 것입니다.

SQLite 데이터베이스 설정

SQLite는 간단한 디스크 기반 데이터베이스이며, 데이터를 파일로 저장합니다. 이를 사용하여 회원가입 정보를 저장할 데이터베이스를 설정합니다.

데이터베이스 파일을 생성하고 테이블을 정의하는 코드는 다음과 같습니다.

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

db.create_all()

위 코드에서는 User 모델 클래스를 정의하고, 각 필드를 설정합니다. 이 예제에서는 사용자명(username), 비밀번호(password), 이메일(email) 필드를 저장할 수 있도록 했습니다.

회원가입 API 구현

이제 회원가입을 처리할 API를 구현해보겠습니다. 회원가입을 위한 API 엔드포인트를 /signup으로 설정하고, 사용자가 POST 요청을 보내면 회원가입 정보를 받아와 데이터베이스에 저장합니다.

Flask에서 제공하는 데코레이터를 사용하여 signup 함수를 API 엔드포인트에 매핑합니다.

from flask import request

@app.route('/signup', methods=['POST'])
def signup():
    username = request.form['username']
    password = request.form['password']
    email = request.form['email']

    user = User(username=username, password=password, email=email)
    db.session.add(user)
    db.session.commit()

    return '회원가입이 성공적으로 완료되었습니다!'

위 코드에서는 POST 요청으로 전송된 사용자명, 비밀번호, 이메일 정보를 받아와 User 모델 객체를 생성합니다. 그리고 해당 객체를 데이터베이스에 추가한 후, 커밋하여 데이터베이스에 변경 사항을 적용합니다.

웹 서버에 API 연결

이제 웹 서버에 회원가입 API를 연결해야합니다. Flask에서는 다음과 같은 코드로 웹 서버를 실행할 수 있습니다.

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

위 코드를 실행하면 웹 서버가 localhost의 기본 포트인 5000번에서 실행됩니다.

추가적인 보안 고려 사항

위의 코드는 간단한 회원가입 기능을 구현하는 예시입니다. 하지만 실제 프로덕션 환경에서는 보안을 강화해야합니다.

참고 자료