flask_login_app/
│
├── app.py
├── templates/
│ ├── login.html
│ └── home.html
└── static/ (선택, CSS/이미지 보관용)
from flask import Flask, render_template, request, redirect, url_for, session
app = Flask(__name__)
app.secret_key = 'your_secret_key' # 세션을 위한 키 설정
# 임시 사용자 데이터 (실제로는 DB 사용)
USER = {
"username": "admin",
"password": "1234"
}
@app.route('/')
def home():
if 'username' in session:
return render_template('home.html', username=session['username'])
return redirect(url_for('login'))
@app.route('/login', methods=['GET', 'POST'])
def login():
error = None
if request.method == 'POST':
input_username = request.form['username']
input_password = request.form['password']
if input_username == USER['username'] and input_password == USER['password']:
session['username'] = input_username
return redirect(url_for('home'))
else:
error = '아이디 또는 비밀번호가 일치하지 않습니다.'
return render_template('login.html', error=error)
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
<!doctype html>
<html>
<head>
<title>로그인</title>
</head>
<body>
<h2>로그인 페이지</h2>
{% if error %}
<p style="color:red;">{{ error }}</p>
{% endif %}
<form method="post">
<label>아이디:</label>
<input type="text" name="username" required><br><br>
<label>비밀번호:</label>
<input type="password" name="password" required><br><br>
<button type="submit">로그인</button>
</form>
</body>
</html>
<!doctype html>
<html>
<head>
<title>홈</title>
</head>
<body>
<h2>환영합니다, {{ username }}님!</h2>
<p><a href="{{ url_for('logout') }}">로그아웃</a></p>
</body>
</html>
터미널에서 다음 명령어를 입력합니다:
python app.py
그리고 브라우저에서 http://localhost:5000/login으로 접속하세요.
아이디: admin, 비밀번호: 1234로 로그인할 수 있습니다.
비밀번호는 반드시 해시 처리 (bcrypt, werkzeug.security) 하세요.
Flask-Login, Flask-WTF 등을 사용해 더 안전하고 구조화된 인증 시스템 구축 가능.
CSRF 보호, 세션 만료, HTTPS 적용도 고려해야 합니다.
필요하시면 Flask-Login을 활용한 보다 안전한 로그인 시스템도 예제로 드릴 수 있어요. 원하시나요?