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

Flask-Loginでログイン・ログアウト機能を完全ガイド!初心者でもわかるユーザー認証の基本フロー

Flask-Loginでログイン・ログアウトを実装する基本フローを学ぼう
Flask-Loginでログイン・ログアウトを実装する基本フローを学ぼう

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

生徒

「Pythonでログインやログアウトの機能を作りたいんですが、どうすればいいですか?」

先生

「FlaskというPythonのツールと、Flask-Loginという拡張機能を使えば、ログイン機能を簡単に作れますよ。」

生徒

「Flask-Loginって何ですか?難しそうですが、パソコンが苦手な私にもできますか?」

先生

「大丈夫ですよ。とてもわかりやすく解説しますので、ゆっくり一緒に学んでいきましょう!」

1. Flask-Loginとは?初心者にもやさしいログイン機能

1. Flask-Loginとは?初心者にもやさしいログイン機能
1. Flask-Loginとは?初心者にもやさしいログイン機能

Flask-Login(フラスク・ログイン)とは、Pythonのウェブアプリ作成ツール「Flask(フラスク)」で使えるユーザーログイン専用の拡張機能です。

Flaskだけでも簡単なウェブサイトを作れますが、ログインのような機能を追加したいときは、Flask-Loginがとても便利です。

ログインとは、「この人は誰なのか」を確認する作業のことです。インターネット上のサービスで、パスワードを入力して自分だと証明するアレです。

2. まずはFlaskとFlask-Loginをインストールしよう

2. まずはFlaskとFlask-Loginをインストールしよう
2. まずはFlaskとFlask-Loginをインストールしよう

プログラミングの世界では、新しい機能を使うときに「インストール(追加する)」が必要です。下のコマンドを使って、FlaskとFlask-Loginをインストールしましょう。


pip install flask flask-login

この作業は、パソコンでいう「アプリのダウンロード」に近いイメージです。

3. ログイン機能の仕組みをざっくり知ろう

3. ログイン機能の仕組みをざっくり知ろう
3. ログイン機能の仕組みをざっくり知ろう

ログイン機能には以下のような流れがあります:

  • ① ユーザーがIDとパスワードを入力する
  • ② Flaskがそれを受け取る
  • ③ Flask-Loginが本人かどうかチェック
  • ④ 正しければログイン状態にする
  • ⑤ 間違っていればログイン失敗

この一連の流れを、Pythonのコードで作っていくことになります。

4. Flaskアプリとログイン管理の初期設定

4. Flaskアプリとログイン管理の初期設定
4. Flaskアプリとログイン管理の初期設定

まずはFlaskとFlask-Loginを使うための、基本の準備をします。


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

app = Flask(__name__)
app.config['SECRET_KEY'] = '秘密の文字列'  # セキュリティのために必要です

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

# ユーザークラスを作成します(IDだけ使うシンプルな例)
class User(UserMixin):
    def __init__(self, id):
        self.id = id

# ユーザー情報をIDから取得する関数(今はシンプルに戻すだけ)
@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

UserMixin(ユーザーミックスイン)というのは、Flask-Loginがログイン中かどうか判断できるようにするためのものです。

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 == 'user' and password == 'pass':
            user = User(username)
            login_user(user)
            return redirect(url_for('protected'))
    return render_template('login.html')

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

login_userは「ログイン状態にする」、logout_userは「ログアウトする」という意味です。

6. ログインしていないと見られないページを作ろう

6. ログインしていないと見られないページを作ろう
6. ログインしていないと見られないページを作ろう

次は「ログインしている人だけが見られるページ」です。これは、ログイン状態を確認して、見せるかどうかを判断します。


@app.route('/protected')
@login_required
def protected():
    return f'ようこそ、{current_user.id} さん!'

@login_required(ログイン・リクワイアド)は、「このページはログインしていないと見せませんよ」という意味の命令です。

7. HTMLでログインフォームを作ってみよう

7. HTMLでログインフォームを作ってみよう
7. HTMLでログインフォームを作ってみよう

ログインページでは、名前とパスワードを入力するフォームが必要です。下記のHTMLコードで作れます。


<!DOCTYPE html>
<html><body>
  <h1>ログイン画面</h1>
  <form method="POST">
    ユーザー名: <input type="text" name="username"><br>
    パスワード: <input type="password" name="password"><br>
    <button type="submit">ログイン</button>
  </form>
</body></html>

このページでユーザーが入力した情報が、Pythonのコードで処理されます。

8. ログインしているかどうかを画面に表示する

8. ログインしているかどうかを画面に表示する
8. ログインしているかどうかを画面に表示する

現在ログイン中の人がいるかどうかを、ページの表示で判断することもできます。


{% if current_user.is_authenticated %}
  ログイン中: {{ current_user.id }}
  <a href="{{ url_for('logout') }}">ログアウト</a>
{% else %}
  <a href="{{ url_for('login') }}">ログイン</a>
{% endif %}

is_authenticatedというのは、「ログインしているかどうかを調べる機能」です。ログインしていればユーザー名が表示されます。

9. Flask-Loginの特徴と便利なポイント

9. Flask-Loginの特徴と便利なポイント
9. Flask-Loginの特徴と便利なポイント

Flask-Loginを使うと、次のような便利な機能が最初から使えます:

  • ✔ ログイン状態の記録(セッション管理)
  • ✔ ログアウト機能の追加
  • ✔ ログインしていない人を自動でログイン画面に誘導
  • ✔ 現在のログインユーザー情報をいつでも確認

これらを自分で全部作るのは大変ですが、Flask-Loginが自動でやってくれるので、初心者にもやさしいです。

まとめ

まとめ
まとめ

FlaskとFlask-Loginを使ったログイン機能づくりは、一見すると難しそうに見えますが、仕組みを順番に理解していくととてもシンプルで扱いやすいことが分かります。まず大切なのは、「ログインとは何をしているのか」という基本的な流れを押さえることです。利用者が入力した名前や合言葉を受け取り、それをもとに本人かどうかを確かめ、正しいと確認できた場合にだけ特別な情報へ進めるようにする。これがログインの本質です。Flask-Loginは、この流れをとても自然な形で実現できるように設計されており、初心者でも理解しやすい工夫が随所に施されています。さらに、ログイン状態の管理やログアウト処理など、複雑に見える部分を自動で支えてくれるため、学びながら少しずつ機能を広げていくことができます。 また、ログイン機能を作るときには、単に動けばよいというだけではなく、どこでどの情報が扱われているのかを意識することが重要です。たとえば、ユーザー情報を取り扱う部分では、名前や合言葉がどのように使われ、どのように確認されるのかを正しく把握する必要があります。合言葉を毎回確認するのか、それとも一度確認したあとに特別な状態として記録しておくのかといった点も、Flask-Loginが自動的に行ってくれるため安心して実装を進められます。こうした動作の裏側を理解することで、ログインの正しい流れを把握し、エラーが起こったときの対処もスムーズに行えるようになります。 さらに、Flask-Loginによって保護された特定の領域を作る構成は、実際のサービス開発にもつながる大事な考え方です。特定のページや情報は、許可された利用者のみが触れられるように分けておく必要があります。これは安全なサービスづくりの基本であり、誰でも自由に見られる部分と、特別な許可がないと見られない部分を丁寧に分けることが信頼性の高い仕組みにつながります。Flask-Loginは、この「区別」を簡単に形にできるため、初めて学ぶ人にも安心して取り組める環境を提供しています。 そのうえ、ログイン状態かどうかを画面に反映させる表示方法を理解しておくことも必要です。「いま利用しているのが誰なのか」「ログインしているかどうか」という状態を画面で見分けられるようになることで、より使いやすい画面設計が可能になります。Flask-Loginの判定機能を使えば、ログイン中の利用者名を表示したり、合言葉を求める画面へ案内したりといった動作を思い通りに制御できるため、利用者にとって分かりやすい操作体験を提供できます。こうした細かな気づかいが積み重なることで、信頼性の高いアプリケーションづくりへつながっていきます。 そして何より、今回の学びを通じて理解しておきたいのは、ログイン機能がただの機能ではなく、安全で安心できる仕組みの基盤となるということです。利用者の情報を守り、誤ったアクセスを防ぎ、必要な人だけが必要な場所に進めるようにする。これらを自然に実現できるのがFlask-Loginの強みであり、初心者がまず押さえておきたい大切な部分でもあります。複雑に見える仕組みも、一度流れを理解し、動作の意味をつかめば自信を持って実装できるようになります。

サンプルコード:ログイン状態を確認して表示を切り替える例


from flask import Flask, render_template
from flask_login import LoginManager, UserMixin, current_user, login_required

app = Flask(__name__)
app.config['SECRET_KEY'] = '安全な秘密鍵'

login_manager = LoginManager()
login_manager.init_app(app)

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

@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

@app.route('/mypage')
@login_required
def mypage():
    return f"ようこそ、{current_user.id} さん!"

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

生徒

「先生、最初はログインって何をしているのかよく分かりませんでしたが、流れを知ると意味が理解できてきました!」

先生

「理解が深まってきましたね。ログインの流れが分かると、コードの動きも自然に読めるようになりますよ。」

生徒

「ログインしているかどうかを画面に表示する仕組みも便利ですね。サービスづくりの基本なんだとわかりました!」

先生

「その気づきはとても大切です。今回の学びを積み重ねていけば、より安全で分かりやすいアプリを作れるようになりますよ。」

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

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

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

FlaskとFlask-Loginの違いは何ですか?それぞれの役割を知りたいです。

FlaskはPythonでWebアプリケーションを作るためのフレームワークで、Flask-LoginはそのFlaskアプリにユーザーのログイン機能を追加するための拡張ライブラリです。Flaskだけではログイン管理はできませんが、Flask-Loginを使えばログイン・ログアウト・認証が簡単に実装できます。
カテゴリの一覧へ
新着記事
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
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説