Flask ログイン & SQLAlchemy – ユーザー ログイン、認証システム
ユーザー ログインおよび認証システムを備えたアプリケーションの構築は、現在の Web 3.0 時代の基本機能です。 Flask ログインを使用して学習する
今日のビジネス モデルでは、ユーザー ベースと顧客指向が非常に人気です。 Web 2.0 とは別に、Web 3.0 では分散化が強調され、より多くのデータ権限とデータ管理が現在のユーザーに返されます。したがって、ユーザー集中化アプローチのトレンドが生じており、それはさらに重要になるでしょう。したがって、Flask を使用してアプリケーションを構築する場合、ユーザーのログインと認証システムは必要な基本機能です。今日は、Flask ログイン マネージャーを活用し、アプリケーション内にログイン マネージャーを構築する方法について説明します。
目次: Flask ログイン システム
- Flask ログイン マネージャーのインストールと構成
- SQLAlchemy と Flask ログイン UserMixin を使用してユーザー データベースを作成および構成する
- ユーザー登録
- Flaskのlogin_user、logout_user、current_user
- Login_required デコレータ
- Flask ユーザーアカウントのログインと認証の完全な Python スクリプト
- よくある質問
Flask ログイン マネージャーのインストールと構成
このモジュールは、Flask アプリケーションでのユーザー セッション管理を提供します。ログイン、ログアウト、および長期間にわたるユーザーのセッションの記憶などの一般的なタスクを処理します。
基本的に、Flask ログイン マネージャーを使用すると、以下のことを行うことができます。
- アクティブなユーザーの ID をセッションに保存すると、簡単にログインおよびログアウトできるようになります。
- ログイン (またはログアウト) ユーザーに表示を制限できます。
- 通常は扱いにくい「私を覚えてください」機能を処理します。
- ユーザーのセッションを Cookie 泥棒による盗用から保護します。
- Flask-Principal または他の承認拡張機能と統合できる可能性があります。
まず最初に、Flask ログイン マネージャーのインストールは非常に簡単です。コンピューター端末にpip3 install flask-login
を入力します。次に、flask アプリケーションで flask ログインを構成するには、次の 3 つの手順を実行します。
1. Flask ログインモジュールをインポートする
2. LoginManager インスタンスを開始し、アプリに接続します
3. user_id を返して、load_user 関数を定義します。
SQLAlchemy と Flask ログイン UserMixin を使用してユーザー データベースを作成および構成する
いいえ、1、SQLAlchemy モジュールをインポートし、flask アプリケーションで構成する必要があります。
次に、必要なデータ列と各データ列の仕様を追加したクラス User を作成します。
最後になりましたが、イニシアチブ SQLAlchemy データベースを作成する必要があります。ターミナルで、イニシアチブ SQLAlchemy データベースを作成できます。 flask アプリケーションで作成したアプリケーション名と、flask アプリケーションとの接続に使用した変数名を使用してください。ここではアプリとデータベースを使用します。
ユーザー登録
これで、コンポーネントは、新しいユーザーがアプリケーションに参加するための登録ルートの構築を開始する準備が整いました。
まず第一に、ユーザーが登録するにはルートが不可欠です。
@app.route("/registration", methods=['GET', 'POST'])
Flask ルートと HTML からの送信データの収集の詳細については、この記事を参照してください。
次に、前に作成した User クラスを参照して、登録ルート上のフォームからの新しいユーザー入力データをデータベースの列と照合する必要があります。アプリケーションに API プログラムもある場合は、ここでもトークン変数を追加し、新しいユーザーが入力したパスワードをデコードする必要があります。
new_user = User(email=email, username=username, password=generate_password_hash(password, method='sha256'), token=token.decode())
次に、 new_user を追加し、 commit()
を使用してそれを確認し、前に作成した login_user 関数を使用してそれを記憶します。
Flask JWT API デプロイメントの詳細については、この記事を参照してください。
https://www.easy2digital.com/automation/data/python-tutorial-54-utilize-flask-jwt-to-tokenizer-the-api-user-identity-and-authenticate-users/
Flaskのlogin_user、logout_user、およびcurrent_user
新しいユーザーの作成後、Flask は開発者がログイン ページ、ログイン ページを構築し、サイトにログインしているユーザーを検出できるようにするモジュールを提供します。
まず最初に、flask_login からモジュールをインポートする必要があります。次のセクションでは、login_required について説明します。
ログインユーザー
ログイン ページに入力されたユーザーのログイン情報を検証するには、SQLAlchemy データ内のユーザー パスワードが訪問者が入力したパスワードと一致するかどうかを確認します。
User クラスのquery.filter_by
使用して、最初に電子メール アドレスを照合します。
次に、取得した電子メール ユーザーのパスワードがフォームからの入力値と一致する場合、そのユーザーはログインされます。また、login_user は、後で log_out する前に任意のセッションでこのユーザーを記憶できます。
ログアウトユーザー
ユーザーがアカウントからログアウトするための新しいルートを作成する
現在の使用者
これは、誰がページにアクセスしているかをアプリケーションに伝えるため、非常に便利なモジュールです。メンバー限定のコンテンツを提供したい場合、または未知のユーザーとサインアップ ユーザーの間でコンテンツを区別したい場合。このモジュールを使用すると、関数のデプロイと構築が容易になります。
return render_template("shopify.html", user=current_user)
既存のユーザーを検出するには、Flask アプリケーションでパーソナライズされたコンテンツを表示したい各ルートまたはルートの render_template に current_user を追加する必要があります。
Login_required デコレータ
メンバーのみに公開されるルートの場合は、ルートの下に login_required デコレータを追加する必要があります。たとえば、ログアウト ルートを考えてみましょう。ユーザーがまだログインしていない場合、ログアウト ページをクリックして移動することはできません。最初にログインすることを通知するフラスコ メッセージを追加できます。
@app.route("/logout")
@login_required
def logout():
logout_user()
return redirect(url_for('home'))
Flask ログインと認証の完全な Python スクリプト
第 57 章 – Flask、SQLAlchemy を使用したユーザー アカウントのログインおよび認証システムの構築の完全な Python スクリプトに興味がある場合は、 「第 57 章」というメッセージを追加してニュースレターを購読してください。 。スクリプトはすぐにあなたのメールボックスに送信されます。
第 57 章 – Flask、SQLAlchemy を使用したユーザー アカウントのログインおよび認証システムの構築を楽しんで読んでいただければ幸いです。もしそうなら、以下にリストされているいずれかの方法で私たちをサポートしてください。それは常に私たちのチャンネルに役立ちます。
- PayPal ( paypal.me/Easy2digital ) を通じて私たちのチャンネルをサポートし、寄付してください。
- 私のチャンネルを購読し、 Easy2Digital Youtube チャンネルの通知ベルをオンにしてください。
- Easy2Digital Facebook ページをフォローして「いいね!」してください
- ハッシュタグ #easy2digital を付けて記事をソーシャル ネットワークで共有してください
- Easy2Digital 10% OFF 割引コード ( Easy2DigitalNewBuyers2021)を使用して製品を購入します
- Easy2Digital の最新記事、ビデオ、割引コードを受け取るには、毎週のニュースレターに登録してください。
- Patreon を通じて月額メンバーシップに登録すると、限定特典をお楽しみいただけます ( www.patreon.com/louisludigital )
よくある質問:
Q1: SQLAlchemyとは何ですか?
A: SQLAlchemyはPythonで書かれたデータベースアクセスライブラリです。データベースとのやり取りを簡単かつ柔軟に行うことができます。
Q2: SQLAlchemyの主な機能は何ですか?
A: SQLAlchemyにはオブジェクトリレーショナルマッピング(ORM)機能やSQLクエリビルダー機能があります。ORMを使用すると、データベーステーブルをPythonのオブジェクトとして扱えます。SQLクエリビルダーを使用すると、Pythonコード内でSQLクエリを簡単に構築できます。
Q3: SQLAlchemyを使用するためには何をインストールする必要がありますか?
A: SQLAlchemyを使用するにはPythonのパッケージ管理ツールであるpipを使用してSQLAlchemyをインストールする必要があります。
Q4: SQLAlchemyはどのようなデータベースと連携できますか?
A: SQLAlchemyは多くのデータベースと連携することができます。主なデータベースとしてはMySQL、PostgreSQL、SQLite、Oracleなどがあります。
Q5: SQLAlchemyを使用すると、どのようにデータベースに接続できますか?
A: SQLAlchemyではデータベースに接続するためのエンジン(Engine)を作成します。エンジンには接続するデータベースの種類と接続情報を指定します。
Q6: SQLAlchemyでデータベーステーブルを作成するにはどうすればよいですか?
A: SQLAlchemyではPythonクラスを作成し、そのクラスをデータベーステーブルとしてマッピングします。テーブルを作成するためのスキーマ情報を指定するために、クラス内にカラムを定義します。
Q7: SQLAlchemyでデータベースにデータを挿入するにはどうすればよいですか?
A: SQLAlchemyではセッション(Session)を作成し、セッション内でオブジェクトを作成してデータを挿入します。セッションをコミットすると、データが実際のデータベースに反映されます。
Q8: SQLAlchemyでデータベースからデータを取得するにはどうすればよいですか?
A: SQLAlchemyではクエリ(Query)を作成し、クエリを実行してデータを取得します。クエリを実行すると、結果セットが返されます。
Q9: SQLAlchemyでデータベースのデータを更新するにはどうすればよいですか?
A: SQLAlchemyではセッション内のオブジェクトを変更することでデータベースのデータを更新します。変更したオブジェクトをセッションに追加し、セッションをコミットすると変更がデータベースに反映されます。
Q10: SQLAlchemyでデータベースのデータを削除するにはどうすればよいですか?
A: SQLAlchemyではセッション内のオブジェクトを削除することでデータベースのデータを削除します。削除したオブジェクトをセッションに追加し、セッションをコミットすると削除がデータベースに反映されます。