Flask-Loginでユーザー認証を実行する方法
認証は、適切な人だけが機密情報にアクセスできるようにするため、ユーザーがデータまたはリソースにアクセスできるようにするWebアプリケーションの重要な部分です。これは、Flask-Loginを使用してフラスコでも実現できます
Flask-Loginは、ユーザーのログインとログアウトを処理し、アプリケーション全体で現在のユーザーを追跡する機能を備えたフラスコの拡張機能です。これにより、Flaskアプリケーションに認証と承認を簡単に実装できます。キーテイクアウト
Flask-Loginによる認証の容易さ:Flask-Loginは、Flaskアプリケーションでのユーザー認証の実装を簡素化します。ユーザーセッション管理、簡単なログイン/ログアウト機能、データベースとのシームレスな統合のためのユーザーローダーコールバックなどの重要な機能を提供します。これは、ユーザーセッションの効率的な管理と認証プロセスの処理に役立ちます。 パスワードの取り扱いとユーザーセッション管理のセキュアー:パスワードをハッシュするためのFlask-Bcryptを使用したパスワードセキュリティの重要性と、Flask-LoginがセッションCookieでユーザーセッションを管理する方法を詳述します。これにより、ユーザーの資格情報が安全に保存され、ユーザーセッションが正確に追跡され、アプリケーションの全体的なセキュリティが強化されます。
実用的な実装ガイダンス:ユーザーモデルの作成、データベース(SQLite)の構成、ユーザー登録とログインのビューの作成、保護ルートでのログアウトロジックの実装など、Flask-Loginのセットアップと使用に関する包括的なガイドを提供します。 Flaskアプリケーションに安全なユーザー認証システムを構築するための実用的なアプローチを提供し、FlaskやWebアプリケーションの開発を新しい人でもアクセスできるようにします。なぜFlask-login?
- を使用するのか
- Flask-Loginには、Flaskアプリケーションで認証をシームレスに実行できるようにする多くの機能と機能があります。 Flask-login: を使用することの利点の一部を以下に示します
- ユーザーセッション管理。 Flask-Loginは、ユーザーセッションの作成と破壊を処理します。また、ユーザーがログインしているかどうかを簡単に確認できるように、セッションに現在のユーザーのIDを保存することもできます。 ログインおよびログアウト機能。 Flask-Loginは、組み込みのログインおよびログアウト機能を提供します。これらの機能は、セッションの作成と破壊やユーザーのリダイレクトを適切なページにリダイレクトするなど、すべての重要なプロセスを処理します。
- ユーザーローダーコールバック。 Flask-Loginを使用すると、ユーザーローダーコールバックを定義できます。このコールバックは、現在のセッションのユーザーオブジェクトをロードするために使用されます。これは、ユーザー情報を保存するためにデータベースを使用している場合に便利です。 認証と承認。 Flask-Loginにより、アプリケーションに認証と承認を簡単に実装できます。 Flask-Loginを使用して、特定のページまたはルートを保護し、アプリケーションへのさまざまなレベルのアクセスをユーザーに付与できます。
- 前提条件
- この記事で長く続くには、次のことが必要です。
- 明らかに、Webブラウザへのアクセスも必要です
- 始めましょう
- フラスコログインモジュールを完全に使用するには、フラスコロギンやその他の必要な依存関係をインストールする必要があります。これらのライブラリは、アプリの機能を改善するために必要な機能とツールを提供します。それらをインストールするには、コマンドプロンプトまたは端末を開き、次のPIPコマンドを実行します。
HTMLとCSS
の基本的な知識
pythonバージョン3とフラスコがインストールFlask-sqlalchemy:データベース操作用のSqlalchemyとFlaskを統合
Flask-Bcrypt:BCRYPTハッシュを追加して、Flask
にパスワードセキュリティを追加します
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
- 注:執筆時点では、FlaskとWerkzeugの最新バージョンで依存関係を解決する際にわずかな問題があります。これを解決するには、Werkzeugのバージョン2.3.0を強制的に強制する必要があります。これは現在唯一の既知のバージョンであるためです。
- 依存関係がインストールされたら、フラスコアプリでそれらを初期化する必要があります:
- 上記のコードスニペットでは、アプリケーションのLoginManagerオブジェクトも初期化しました。 LoginManagerは、ユーザーセッションを処理するために必要な構成をセットアップするために使用されるフラスコロギンの拡張です。 ユーザーモデルの作成
モデルは、アプリケーションで使用するデータ構造の表現です。システム内でデータの編成、保存、操作方法を定義します。モデルは通常、事前に定義された構造に従うデータベースで使用されます。アプリには、次のデータがあります
- 一意のid
- aユーザー名
- パスワード(ハッシュ)
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
プロジェクトの範囲に応じて、電子メールアドレスやプロフィール写真など、ユーザーモデルに追加のプロパティを追加することもできます。
データベースの作成ユーザーモデルを定義したら、前のモデルで作成したデータ構造を保存するデータベースを作成する必要があります。 この記事では、SQLiteデータベースを使用します。これは、SQLiteが軽量でサーバーレスデータベースエンジンであるためです。これにより、個別のインストールを必要としないため、セットアップと使用が簡単になります。また、小規模から中型のアプリケーションにも適しています。
アプリケーションでsqliteデータベースを使用するための手順の内訳は次のとおりです。
Sqlalchemyは、Pythonを使用してデータベースを操作するためのツールのセットを提供するオブジェクトリレーショナルマッパーです。ラインdb = sqlalchemy(app)は、sqlalchemyクラスのインスタンスを作成し、それをフラスコアプリケーション(APP)に結合します。 このデータベースを作成するには、create_allメソッドを使用してデータベースを初期化する必要があります。
- このコードは、通常、Pythonスクリプトの最後に、またはデータベースの初期化専用の別のスクリプトに配置されます。スクリプトを実行すると、以前に定義したモデルに基づいて、データベースファイルが対応するテーブルで作成されます。
この場合、コードは、まだ存在しない場合、ユーザーテーブルを使用してSite.dbファイルを作成します。 site.dbファイルは通常、 /instance /。
<span>from flask_sqlalchemy import SQLAlchemy </span> <span>from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required </span> <span>from flask_bcrypt import Bcrypt </span> <span>from flask_login import LoginManager </span> app <span>= Flask(__name__) </span> login_manager <span>= LoginManager() </span> login_manager<span>.init_app(app) </span>
ログイン後にコピーログイン後にコピーログイン後にコピーというフォルダーにあります
-
<span>class User(UserMixin): </span> <span>id = db.Column(db.Integer, primary_key=True) </span>username <span>= db.Column(db.String(64), unique=True) </span>password_hash <span>= db.Column(db.String(128)) </span> <span>def __repr__(self): </span> <span>return <span>f'<User <span>{self.username}</span>>'</span></span>
ログイン後にコピーログイン後にコピーログイン後にコピー -
パスワードハッシュ
app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>
ログイン後にコピーログイン後にコピーログイン後にコピー通常、パスワードは最初に登録プロセスでハッシュされ、データベースに保存されます。その後、ユーザーがログインするたびに、パスワードが再度ハッシュされ、データベースに保存されているハッシュされたパスワードと比較されます。 2つのパスワードが一致する場合、ユーザーは認証され、アプリケーションへのアクセスが与えられます。Flask-Bcrypt
を使用して、パスワードをハッシュおよび検証する方法
Flaskには、この機能を実現するのに役立つFlask-Bcryptと呼ばれる拡張機能があります。 Generate_password_hash()とcheck_password_hash()。
の2つの主要な機能がありますthegenerate_password_hash()関数は、ユーザーのパスワードを引数として取得し、ハッシュされたパスワードを返します。これは通常、登録ロジックで使用されます。
check_password_hash()関数は、パスワードとハッシュされたパスワードを引数として取り、2つのパスワードが一致する場合はtrueを返します。これは、ログインビューへのアクセスを付与する前に呼び出されます
レジスタビューの作成
ビューは、ユーザーのブラウザに送信されるHTML、JSON、またはその他のデータを生成するために使用されるフラスコフレームワークの一部です。このコードスニペットでは、ユーザーの入力を受け入れ、データベースに詳細を追加するビューを作成します。
コードの内訳です:pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー- 最初の行では、URLパス /ログインのルートを定義します。このルートは、GETリクエストと投稿の両方を受け入れます。ルートに関連付けられているログイン()関数は、リクエストが行われたときに実行されます。
- 次に、リクエストメソッドがPOSTメソッドであるかどうかを確認します。
- 確認されたら、関数はログインフォームでユーザーが入力した値を取得します。
<span>from flask_sqlalchemy import SQLAlchemy </span> <span>from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required </span> <span>from flask_bcrypt import Bcrypt </span> <span>from flask_login import LoginManager </span> app <span>= Flask(__name__) </span> login_manager <span>= LoginManager() </span> login_manager<span>.init_app(app) </span>
ログイン後にコピーログイン後にコピーログイン後にコピー<span>class User(UserMixin): </span> <span>id = db.Column(db.Integer, primary_key=True) </span>username <span>= db.Column(db.String(64), unique=True) </span>password_hash <span>= db.Column(db.String(128)) </span> <span>def __repr__(self): </span> <span>return <span>f'<User <span>{self.username}</span>>'</span></span>
ログイン後にコピーログイン後にコピーログイン後にコピーログインビューの作成 - ログインビューでは、ページからの入力を受け入れるロジックを作成し、データベースの行が任意の行に一致するかどうかを確認します。
コードの仕組みの内訳です:
最初の行で - @app.route( ' /login'、methods = ['get'、 'post']): - URLパス /ログインのルートを定義するデコレータを使用しています。ルートは、GETリクエストと投稿の両方を受け入れます。関連する関数であるLogin()は、このルートにリクエストが行われると実行されます。
login()関数は、リクエストメソッドが投稿されているかどうかを確認することから始まります。app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>
ログイン後にコピーログイン後にコピーログイン後にコピー一度、それが投稿リクエストであることが確認され、ログインフォームでユーザーが入力した値を取得します:
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
ログイン後にコピーログイン後にコピーログイン後にコピーログイン後にコピー - それから、提供されたユーザー名を持つユーザーのデータベースを照会します。
<span>from flask_sqlalchemy import SQLAlchemy </span> <span>from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required </span> <span>from flask_bcrypt import Bcrypt </span> <span>from flask_login import LoginManager </span> app <span>= Flask(__name__) </span> login_manager <span>= LoginManager() </span> login_manager<span>.init_app(app) </span>
ログイン後にコピーログイン後にコピーログイン後にコピー - ユーザー名とパスワードの両方が検証されている場合、ユーザーはFlask-Loginのlogin_userとリダイレクト関数を使用してアクセスを許可されます。
<span>class User(UserMixin): </span> <span>id = db.Column(db.Integer, primary_key=True) </span>username <span>= db.Column(db.String(64), unique=True) </span>password_hash <span>= db.Column(db.String(128)) </span> <span>def __repr__(self): </span> <span>return <span>f'<User <span>{self.username}</span>>'</span></span>
ログイン後にコピーログイン後にコピーログイン後にコピー
ただし、要求方法が投稿されていない場合、または詳細が正しくない場合、login.htmlテンプレートをレンダリングします。
-
本質的に、入力された資格情報が有効であるかどうかを確認し、ユーザーにログインし、成功した場合はウェルカムページにリダイレクトします。ログインが失敗した場合、またはGETリクエストの場合、ユーザーが資格情報を入力するためのログインテンプレートをレンダリングします。
app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>
ログイン後にコピーログイン後にコピーログイン後にコピー
ほとんどのアプリケーションでは、ユーザーがログインしていない場合、一部のページはアクセスできません。これには、トランザクション履歴、ドラフト、ログアウトページなどのページが含まれます。 Flask-Loginは、これらのページ/ルートを保護し、login_requiredデコレーターを使用して認証されたユーザーへのアクセスを制限する便利な方法を提供します。それがどのように機能するかの内訳は次のとおりです。
この機能を利用するには、flask-loginからlogin_requiredデコレーターをインポートする必要があります:
次に、保護する任意のルートにlogin_requiredデコレータを追加する必要があります。たとえば、ユーザーがログインしたときにのみアクセスできるログアウトページを作成しましょう。
これがどのように機能するかの内訳です:
db <span>= SQLAlchemy(app)</span>
ログインビューのように、 @app.route( ' /logout')は、URLパス /ログアウトのルートを定義します。
<span>if __name__ == '__main__': </span> db<span>.create_all() </span> app<span>.run(debug=True)</span>
ユーザーをログアウトした後、関数はredirect(url_for( 'login'))を使用してログインルートにリダイレクトします。
- したがって、ユーザーが /ログアウトルートにアクセスすると、Flask-Loginはログイン(@Login_Required)を確認し、ログアウトし、ログインページにリダイレクトします。これにより、Flaskアプリケーションでユーザーログアウトを安全に処理できます。 login_requiredデコレーターは /保護されたルートに適用され、認証されたユーザーのみがアクセスできることを示します。また、ユーザーがログインせずに保護されたページにアクセスしようとした場合、Flask-Loginはそれらをログインページにリダイレクトします。
- テンプレートの追加 フラスコ内の
- テンプレートを使用すると、HTMLページを使用してサイトの外観を定義できます。 app.pyファイルにロジックを完全に実装するには、以下の写真のHTMLページを作成します。
- 以下のアニメーションは、テンプレートがサイトのさまざまなページをどのようにレンダリングするかを示しています。
このチュートリアルの完全なコードを表示し、この記事のgithubリポジトリでその実装について詳しく知ることができます。 Flask-LoginがユーザーセッションのCookieでユーザーセッションを管理する方法
ユーザーセッションは、ユーザーがログインしている間にユーザー情報の追跡と更新に使用されるシステムです。Flask-Loginは、ユーザーのブラウザにセッションCookieを保存することにより、これらのセッションを管理します。セッションクッキーは、ユーザーのセッションに一意の識別子を含む小さなデータです。
ユーザーがFlask-Loginを使用してWebサイトにログインすると、サーバーはセッションCookieを生成し、ユーザーのブラウザに送信します。ブラウザはセッションCookieを保存し、すべてのリクエストにサーバーに含めます。サーバーはセッションCookieを使用して、ユーザーとセッション状態を識別します。 たとえば、ユーザーがログインしてFlask-Loginによって保護されているページにアクセスした場合、Flask-LoginはセッションCookieをチェックして、ユーザーが認証されているかどうかを確認します。ユーザーが認証されている場合、Flask-Loginはユーザーのプロファイル情報をデータベースからロードし、ビューを利用できるようにします。ユーザーが認証されていない場合、Flask-Loginはユーザーをログインページにリダイレクトします。
ユーザーがWebサイトからログアウトすると、サーバーはユーザーのブラウザからセッションCookieを削除し、ユーザーセッションを終了します。結論
Flaskは、ユーザーセッション管理から承認まで、認証のさまざまな側面に対処するさまざまな機能を提供します。これらの機能を使用することにより、アプリケーションの特定のニーズに合わせた堅牢で安全な認証システムを実装できます。
以上がFlask-Loginでユーザー認証を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。
