Flaskでのセッション管理の実装と応用例

この記事では、PythonのWebフレームワークであるFlaskを用いてセッション管理を行う方法について解説します。セッション管理は、Webアプリケーションでのユーザー認証やデータ保持に非常に重要な役割を果たします。具体的なコード例とその解説、さらに応用例を2つ紹介しています。

目次

基本的なセッション管理の実装

Flaskでのセッション管理は比較的シンプルです。基本的な実装には、Flaskの`session`オブジェクトを使用します。

基本コード例

from flask import Flask, session, redirect, url_for, request
app = Flask(__name__)
app.secret_key = 'supersecretkey'
@app.route('/')
def index():
    if 'username' in session:
        return f'Logged in as {session["username"]}'
    return 'You are not logged in'
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return '''
        

'''

コード解説

– `app.secret_key`: セッションを暗号化するための秘密鍵です。
– `session[‘username’]`: ユーザー名をセッションに保存しています。
– `redirect`と`url_for`: ログイン後、`index`ページにリダイレクトします。

応用例1:セッションタイムアウトの設定

セッションタイムアウトは、一定時間後にセッションを無効にする機能です。これはセキュリティ対策として有用です。

タイムアウトコード例

from datetime import timedelta
from flask import session, app

@app.before_request
def make_session_permanent():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=5)

コード解説

– `timedelta(minutes=5)`: 5分後にセッションがタイムアウトします。

応用例2:セッションによるロール管理

異なるユーザーロールによってアクセス可能なページを制御する例です。

ロール管理コード例

@app.route('/admin')
def admin():
    if 'role' in session and session['role'] == 'admin':
        return 'Admin page'
    else:
        return 'Unauthorized'

コード解説

– `session[‘role’]`: セッションでユーザーロールを管理しています。
– `if ‘role’ in session and session[‘role’] == ‘admin’`: セッションに`role`が`admin`であれば、管理者ページが表示されます。

まとめ

この記事では、Flaskを用いた基本的なセッション管理方法から、セッションタイムアウトの設定、ロール管理といった応用例までを解説しました。これらのテクニックを活用することで、よりセキュアで使いやすいWebアプリケーションを作成することができます。

コメント

コメントする

目次