カテゴリ: Flask 更新日: 2025/12/07

Flask-Loginの使い方を完全解説!初心者にもわかるログイン状態の管理方法

Flask-Loginでユーザーのログイン状態を管理する方法まとめ
Flask-Loginでユーザーのログイン状態を管理する方法まとめ

先生と生徒の会話形式で理解しよう

生徒

「Webサイトでログイン状態を記憶させるって、どうやるんですか?」

先生

「FlaskではFlask-Loginという拡張機能を使えば、簡単にログイン状態を管理できますよ。」

生徒

「難しそうだけど、初心者でも使えるんですか?」

先生

「もちろんです!今日はプログラミング未経験の方でも分かるように、基本からゆっくり解説していきましょう。」

1. Flask-Loginとは?

1. Flask-Loginとは?
1. Flask-Loginとは?

Flask-Loginは、PythonのWebフレームワークであるFlaskで「ログイン機能」を作るための拡張ライブラリです。

ログインしているかどうかの状態(ログイン状態)を、Webサイトの中で記憶・管理してくれます。

たとえば、通販サイトで「ログインしたまま買い物ができる」のも、こうした仕組みのおかげです。

Flask-Loginは、次のようなことを自動でやってくれます:

  • ユーザーがログインしているかどうかをチェック
  • ログインしていない人にはログインページを表示
  • ログイン中のユーザー情報にアクセス

2. Flask-Loginをインストールしよう

2. Flask-Loginをインストールしよう
2. Flask-Loginをインストールしよう

まずは、Flask-Loginをインストールします。「インストール」とは、パソコンに必要な部品を入れることです。

次のコマンドをターミナルやコマンドプロンプトで入力しましょう。


pip install flask-login

3. FlaskアプリにFlask-Loginを組み込もう

3. FlaskアプリにFlask-Loginを組み込もう
3. FlaskアプリにFlask-Loginを組み込もう

次は、Flaskアプリの中にFlask-Loginを設定する方法です。まず、基本のコードを見てみましょう。


from flask import Flask, redirect, url_for, render_template, request
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

app = Flask(__name__)
app.secret_key = 'ひみつのカギ'

login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'

secret_keyは、セッション(状態の保存)に使う鍵です。
人に知られないような文字列を設定します。

login_manager.login_viewには、ログインページの関数名を指定します。

4. ユーザークラスの作り方

4. ユーザークラスの作り方
4. ユーザークラスの作り方

ログイン機能には「ユーザー情報」が必要です。

今回は簡単な例として、ユーザーをPythonのクラスで表現します。


class User(UserMixin):
    def __init__(self, id):
        self.id = id

users = {'testuser': {'password': 'password123'}}

UserMixinというのは、「ログインに必要な機能」を自動でつけてくれる部品です。

ここでは、testuserという名前のユーザーだけを登録しています。

5. ログイン処理の書き方

5. ログイン処理の書き方
5. ログイン処理の書き方

いよいよログインページを作ります。次のコードを追加してください。


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        if username in users and users[username]['password'] == password:
            user = User(username)
            login_user(user)
            return redirect(url_for('protected'))
        return 'ログイン失敗'
    return '''
        <form method="post">
            ユーザー名:<input type="text" name="username"><br>
            パスワード:<input type="password" name="password"><br>
            <input type="submit" value="ログイン">
        </form>
    '''

login_user()を使うと、そのユーザーを「ログイン状態」にできます。

redirect()は「別のページに移動させる」ための関数です。

6. ログインが必要なページを作る

6. ログインが必要なページを作る
6. ログインが必要なページを作る

ログインしている人だけが見られるページは、次のように作ります。


@app.route('/protected')
@login_required
def protected():
    return f'ようこそ、{current_user.id}さん!このページはログイン中のみ見られます。'

@login_requiredは、ログインしていない人を/loginに飛ばします。

current_user.idで、今ログインしているユーザー名を表示できます。

7. ログアウト処理の書き方

7. ログアウト処理の書き方
7. ログアウト処理の書き方

ログアウトしたいときの処理もとても簡単です。


@app.route('/logout')
@login_required
def logout():
    logout_user()
    return 'ログアウトしました'

logout_user()を使うことで、ログイン状態を解除できます。

8. ユーザー情報の読み込み関数

8. ユーザー情報の読み込み関数
8. ユーザー情報の読み込み関数

最後に、ユーザーIDからユーザー情報を読み込む関数を追加します。


@login_manager.user_loader
def load_user(user_id):
    if user_id in users:
        return User(user_id)
    return None

user_loaderは、ログイン状態の復元に使われる特別な関数です。

9. 完成したコードを動かしてみよう!

9. 完成したコードを動かしてみよう!
9. 完成したコードを動かしてみよう!

ここまでのコードを組み合わせて保存すれば、簡単なログイン機能が完成します。

Flaskアプリを起動して、ブラウザで試してみましょう。


if __name__ == '__main__':
    app.run(debug=True)

http://localhost:5000/login にアクセスして、testuserpassword123でログインしてみてください。

まとめ

まとめ
まとめ

Flaskで安全なログイン機能を実装するためには、ユーザー情報の管理、ログイン状態の保持、保護されたページの制御など、複数の要素を丁寧に組み合わせる必要があります。とくにFlask-Loginは、ログイン状態の継続やセッションの取り扱いを簡略化してくれる便利な拡張機能であり、初心者がつまずきやすい「ログインしたユーザーだけが見られるページの作り方」や「ユーザー情報の読み込み」なども、少ない記述で自然に扱える点が大きな特徴です。実際の開発現場でもFlask-Loginはよく利用されており、学んでおくことで小規模サービスから中規模アプリケーションまで幅広く応用ができます。 また、ユーザークラスの作成やログイン処理、ログアウト処理など、Flask-Loginが提供する仕組みを理解しながら実装すると、Webアプリケーションにおける認証の流れが自然と身につきます。セッションやsecret_keyの役割、@login_requiredデコレーターによるページ保護、current_userによるログイン中ユーザー情報の取得などは、Web開発における基本的かつ重要な知識であり、今回の記事の流れに沿って実際にコードを書くことで確実に習得できます。 以下はまとめとして、今回学んだFlask-Loginの流れを再確認できるサンプルコードです。実際の開発でも似た構成を取ることが多いため、ひとつの基本形として覚えておくと便利です。

サンプルプログラム(まとめ版)


from flask import Flask, redirect, url_for, request
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

app = Flask(__name__)
app.secret_key = 'まとめのひみつのカギ'

login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'

class User(UserMixin):
    def __init__(self, id):
        self.id = id

users = {'testuser': {'password': 'password123'}}

@login_manager.user_loader
def load_user(user_id):
    if user_id in users:
        return User(user_id)
    return None

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        if username in users and users[username]['password'] == password:
            login_user(User(username))
            return redirect(url_for('mypage'))
        return 'ログイン失敗しました'
    return '<form method="post">ユーザー名:<input name="username"><br>パスワード:<input type="password" name="password"><br><input type="submit" value="ログイン"></form>'

@app.route('/mypage')
@login_required
def mypage():
    return f'{current_user.id}さんとしてログインしています'

@app.route('/logout')
@login_required
def logout():
    logout_user()
    return 'ログアウトしました'

if __name__ == '__main__':
    app.run(debug=True)

このサンプルは、記事内で紹介した流れをひとつにまとめた形で、ログイン処理・保護されたページの作成・ログアウトの一連の流れを確認できます。こうした構成を理解しておくことで、より複雑なユーザー管理やデータベースと連動した本格的な認証機能へと発展させることも可能になります。とくに初学者の段階では「ログインしたユーザーだけが見られるページがどう動くのか」「ログイン状態がどう保持されているのか」を意識しながらコードを読むことが非常に大切です。 Flask-Loginは必要最低限のAPIで構成されているため、シンプルながら学習効果が高く、PythonによるWeb開発の基礎を身につけるのに最適なライブラリといえます。今回学んだ内容をもとに、実際に自分でコードを動かしながら理解を深めていくことで、認証機能の仕組みがより鮮明に理解できるようになります。

先生と生徒の振り返り会話

生徒

「Flask-Loginって、思っていたよりシンプルに使えるんですね。ログイン状態の管理って難しいものだと思っていました。」

先生

「そうですね。Flask-Loginは最低限の機能に絞られているので、初心者でも理解しやすい仕組みになっていますよ。今回のコードをしっかり理解すれば、ログイン機能の基本は問題ありません。」

生徒

「@login_requiredを付けるだけでページが守られるのが便利でした。current_userでユーザー名を取れるのも分かりやすかったです。」

先生

「はい。ログイン状態の保持やユーザー情報の読み込みなどはFlask-Loginが裏側で処理してくれるので、必要なところにだけコードを書けばよいんです。次はデータベースと合わせて本格的な認証機能にも挑戦できますね。」

生徒

「はい!実際にコードを動かしながら練習してみます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Flask-Loginとは何ですか?Flaskでログイン機能を作るときにどう役立つのですか?

Flask-Loginは、Flaskアプリでログイン状態を管理するための拡張機能です。ユーザーがログインしているかどうかを判断し、ログインが必要なページでは未ログインの場合にログインページへ誘導するなど、ログイン管理に必要な機能をまとめて提供してくれます。
カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.8
Java&Spring記事人気No8
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説