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