[python] 웹 서버에 사용자 인증 기능 추가하기

웹 서버를 운영할 때 사용자 인증 기능은 매우 중요합니다. 이를 통해 특정 사용자만이 웹 애플리케이션에 접근하도록 제한할 수 있습니다. Python을 사용하여 웹 서버에 사용자 인증 기능을 추가하는 방법을 알아보겠습니다.

1. Flask 프레임워크 설치하기

먼저 Flask 프레임워크를 설치해야 합니다. 파이썬의 가상환경을 설정한 후, 다음 명령어를 사용하여 Flask를 설치합니다:

pip install flask

2. 사용자 데이터베이스 설정하기

사용자 인증을 위해 사용자 정보를 저장할 데이터베이스를 설정해야 합니다. 가장 간단한 방법은 SQLite를 사용하는 것입니다. 다음 명령어를 실행하여 SQLite를 설치합니다:

pip install sqlite3

데이터베이스 파일을 생성하고 테이블을 만들기 위해 다음 코드를 사용합니다:

import sqlite3

db = sqlite3.connect('users.db')
cursor = db.cursor()

cursor.execute('''
    CREATE TABLE IF NOT EXISTS users(
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT NOT NULL,
        password TEXT NOT NULL
    )
''')

db.commit()

3. 회원가입 기능 추가하기

회원가입 기능을 추가하여 사용자를 데이터베이스에 등록할 수 있도록 해야 합니다. 다음 코드를 사용하여 사용자 등록 기능을 구현합니다:

from flask import Flask, render_template, request
import sqlite3

app = Flask(__name__)

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        db = sqlite3.connect('users.db')
        cursor = db.cursor()

        cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
        db.commit()

        return '회원가입이 완료되었습니다.'
    
    return render_template('register.html')

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

4. 로그인 기능 추가하기

회원가입이 완료된 사용자들이 로그인할 수 있도록 로그인 기능을 추가합니다. 다음 코드를 사용하여 로그인 기능을 구현합니다:

from flask import Flask, render_template, request, redirect, url_for
import sqlite3

app = Flask(__name__)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        db = sqlite3.connect('users.db')
        cursor = db.cursor()

        cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, password))
        user = cursor.fetchone()

        if user is not None:
            return '로그인 성공!'
        else:
            return '올바르지 않은 사용자 정보입니다.'
    
    return render_template('login.html')

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

마무리

위의 코드를 사용하여 Flask 프레임워크를 이용하여 웹 서버에 사용자 인증 기능을 추가할 수 있습니다. 회원가입과 로그인 기능을 통해 사용자 인증을 구현할 수 있으며, 데이터베이스를 통해 사용자 정보를 저장합니다. 이후 추가적인 보안 기능을 적용하거나 다른 인증 방식을 구현할 수 있습니다.