FlaskはPythonで使われる軽量なWebフレームワークの一つで、短時間でシンプルなアプリを構築できるのが特徴です。この記事では、Flaskアプリに「ログイン機能」を追加する方法を、初心者向けに解説します。

セッションとは?
Webアプリにおいて、セッションとは「ユーザーごとに情報を保持するメカニズム」のことです。HTTPは非状態であるため、ログインしたゆとりやショッピングカートの中身など、ユーザーの状態を持続するためにセッションが必要になります。
Flaskではsession
オブジェクトを使うことで、簡単にユーザー状態を保つことができます。
Flaskでセッションを使う法
Flaskのsession
を使用するには、最初にシークレットキーの設定が必要です(データを保証するため)。
from flask import Flask, session
app = Flask(__name__)
app.secret_key = 'your_secret_key' # 本番では密に保管
ユーザー登録フォームの作成
HTMLファイル: templates/register.html
<form method="POST">
<input type="text" name="username" placeholder="ユーザー名">
<input type="password" name="password" placeholder="パスワード">
<button type="submit">登録</button>
</form>
Flask側:
from flask import request, render_template
users = {}
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if username in users:
return 'User already exists'
users[username] = password
return 'Registered!'
return render_template('register.html')
ログインフォームの作成
HTMLファイル: templates/login.html
<form method="POST">
<input type="text" name="username" placeholder="ユーザー名">
<input type="password" name="password" placeholder="パスワード">
<button type="submit">ログイン</button>
</form>
Flask側:
from flask import Flask, render_template, session
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if users.get(username) == password:
session['user'] = username
return 'Logged in!'
else:
return 'Invalid credentials'
return render_template('login.html')
sessionを使った状態管理
session
はディクショナリのように使えます:
from flask import Flask, render_template, session
@app.route('/dashboard')
def dashboard():
if 'user' in session:
return f"Hello, {session['user']}!"
return 'You are not logged in'
ログアウト機能
from flask import Flask, render_template, session
@app.route('/logout')
def logout():
session.pop('user', None)
return 'Logged out'
進んだチェックと実際の実装
- パスワードは固定値ではなく、
werkzeug.security
を使ってハッシュ化する。 - SQLite + SQLAlchemy でユーザーをDB管理する
- Flask-Login などのパッケージを使うと、もっとセキュアにログイン管理が可能
おわりに
Flaskでは、ログイン機能をわずかなコードで実装できます。
まずはsession
を使って基本的なログイン状態の保持をしてみましょう。
以降は、Flask-LoginやSQLAlchemyを使って本格的なユーザー管理に進むこともできます。