
目標
- 管理者の利用するページはサインインが必要にする
サインイン機能の追加
サインイン機能の追加
ここでは、管理者が利用するページに対して、アクセス制限を設け、サインインを必要とする機能を追加します。この作業は、feature-loginブランチを作成して行います。
$ git checkout -b feature-loginコマンド

Flask-Login
Flask-Loginの概要
Flask-Login は、Flask アプリケーションにユーザー認証を簡単に追加するための拡張ライブラリです。このライブラリを使うと、ログイン、ログアウト、セッション管理などの認証関連の機能を簡単に実装できます。主な機能は以下の通りです。
ユーザーの認証
ユーザーがログインしているかどうかを簡単に管理できます。Flask-Login はセッションにユーザー情報を保存し、リクエストが来るたびにその情報を確認します。
ログイン管理
ユーザーがログインする際に、認証情報(通常はユーザーIDやセッション)を保存して、次回のリクエスト時にその情報を復元できます。
ログアウト機能
ユーザーがログアウトしたときにセッションを破棄し、再度認証なしにアクセスできないようにします。
認証が必要なページへのアクセス制限
ログインしていないユーザーがアクセスできないページを制限することができます。
セッション管理
Flask-Login は、セッションにユーザーのログイン状態を保持します。これにより、ユーザーがブラウザを閉じても再度ログインし直す必要がなくなります。
Flask-Loginのインストール
次のコマンドで Flask-Login をインストールします。
pip install flask-login

ユーザーセキュリティアプリケーションに必要なファイル
ユーザーセキュリティアプリケーションに必要なファイルを準備します。ここでは「common」ディレクトリを利用してその中に次のファイルを作成します。
ユーザーセキュリティアプリケーションに利用するファイルの作成
- static/css/style.css
- templates/common_base.html
- templates/dashboard.html
- templates/login.html
- templates/register_user.html
- templates/user_list.html
- apps.py
- models.py

ユーザーモデルと認証プログラムの作成
models.py(apps/common内)
開発中のFlaskアプリケーションで、これまでに作成した「commonディレクトリ」にmodels.pyファイルを作成します。models.pyファイルを作成したら次のように入力します。(管理者フラグ付き)
from flask_login import UserMixin
from apps.common.db import db
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(150), nullable=False, unique=True)
password = db.Column(db.String(150), nullable=False)
is_admin = db.Column(db.Boolean, default=False)
def __repr__(self):
return f"<User {self.username}>"
app.py(apps/common内)
commonディレクトリにapp.pyファイルを作成して次のように入力します。

今回は以上になります。

ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。


この続きはNoteとなります。