IMG-LOGO
공지사항 :

Flask를 사용하여 간단한 로그인 페이지

lmkfox - 2025-05-10 09:24:44 113 Views 0 Comment

1. 프로젝트 구조

flask_login_app/
│
├── app.py
├── templates/
│   ├── login.html
│   └── home.html
└── static/ (선택, CSS/이미지 보관용)


 2. Flask 앱 기본 코드 (

app.py

)

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)


 3. HTML 템플릿

templates/login.html

<!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>

templates/home.html

<!doctype html>
<html>
<head>
    <title>홈</title>
</head>
<body>
    <h2>환영합니다, {{ username }}님!</h2>
    <p><a href="{{ url_for('logout') }}">로그아웃</a></p>
</body>
</html>


 4. 실행 방법

터미널에서 다음 명령어를 입력합니다:

python app.py

그리고 브라우저에서 http://localhost:5000/login으로 접속하세요.

아이디: admin, 비밀번호: 1234로 로그인할 수 있습니다.


보안 팁 (실제 서비스 적용 시)

  • 비밀번호는 반드시 해시 처리 (bcrypt, werkzeug.security) 하세요.

  • Flask-Login, Flask-WTF 등을 사용해 더 안전하고 구조화된 인증 시스템 구축 가능.

  • CSRF 보호, 세션 만료, HTTPS 적용도 고려해야 합니다.


필요하시면 Flask-Login을 활용한 보다 안전한 로그인 시스템도 예제로 드릴 수 있어요. 원하시나요?


댓글