Python サーバー プログラミング: Flask-Login を使用したユーザー ログインの実装
Web アプリケーションの開発と普及により、ユーザー ログインは多くのアプリケーションにとって不可欠な機能になりました。 Python サーバー プログラミングでは、Flask は広く使用されている Web 開発フレームワークです。さらに、Flask はユーザー ログイン機能を迅速に実装するのに役立つ Flask-Login などの多くのサードパーティ拡張機能も提供します。
この記事では、Flask-Login 拡張機能を使用して Python サーバーにユーザー ログイン機能を実装する方法を紹介します。その前に、Flask と Flask-Login 拡張機能をインストールする必要があります。 pip コマンドを使用してインストールできます。
pip install Flask Flask-Login
次に、ユーザー ログイン システムを実装しましょう。
まず、Flask アプリケーションを作成する必要があります。ルート ディレクトリに app.py ファイルを作成し、次のコードを記述します:
from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "Hello World!" if __name__ == "__main__": app.run(debug=True)
この例では、Flask アプリケーションを作成し、ルートを定義しました。ルート ルートは "Hello World !" を返します。また、 __name__ == "__main__"
条件ステートメントを使用して、スクリプトの実行時にのみ Flask アプリケーションが実行されるようにします。
これで、単純な Flask アプリケーションが正常に作成されました。
2. ユーザー モデルの作成
この例では、ユーザーのユーザー名とパスワードがデータベースに保存されていると仮定します。したがって、ログイン時にユーザーが存在するかどうかを確認できるように、最初にユーザー モデルを定義する必要があります。
次のコードを app.py ファイルに追加します:
from flask_login import UserMixin class User(UserMixin): def __init__(self, id): super().__init__() self.id = id def __repr__(self): return f"<User {self.id}>"
この例では、Flask-Login の UserMixin
クラスを継承する User クラスを定義します。 UserMixin
は、次のようないくつかの便利なプロパティとメソッドを提供します。
is_authenticated
: ユーザーが認証されている場合は True。 is_active
: ユーザーがアクティブな場合は true。 is_anonymous
: ユーザーが認証されていない場合は true。 get_id
: ユーザー ID の文字列表現を返します。 User クラスのコンストラクターで、ユーザーの ID を渡します。また、デバッグおよびテスト中にユーザー オブジェクトに関する詳細情報を確認するための __repr__
メソッドも定義します。
次に、ユーザーがユーザー名とパスワードを入力できるようにするログイン ビューを作成する必要があります。ユーザーのユーザー名とパスワードが正しい場合、ログインは成功し、ユーザー オブジェクトが Flask-Login のユーザー セッションに追加されます。
次のコードを app.py ファイルに追加します。
from flask_login import LoginManager, login_user, current_user login_manager = LoginManager() login_manager.init_app(app) @login_manager.user_loader def load_user(user_id): return User(user_id) @app.route("/login") def login(): user_id = request.args.get("user_id") password = request.args.get("password") if user_id and password: # 省略查询数据库的代码 user = User(user_id) login_user(user) return "Login success!" else: return "Login failed!" @app.route("/logout") def logout(): logout_user() return "Logout success!"
この例では、最初に LoginManager
オブジェクトを作成します。次に、ユーザー ID をパラメーターとして受け取り、その ID に対応するユーザー オブジェクトを返す user_loader
コールバック関数を定義します。この例では、新しい User
オブジェクトを作成し、ID をパラメーターとして渡します。
次に、ログイン ビューを定義します。 view 関数では、request.args.get
メソッドを使用して、クエリ文字列からユーザー ID とパスワードを取得します。次に、ユーザー ID とパスワードが有効かどうかを確認します。ユーザーのユーザー名とパスワードが正しい場合、新しい User
オブジェクトが作成され、そのオブジェクトは login_user
関数を使用して Flask-Login のユーザー セッションに追加されます。ユーザーのユーザー名とパスワードが間違っている場合、ユーザーはログインできません。
最後に、ログアウト ビューを定義します。このビューは、logout_user
関数を使用して、Flask-Login のユーザー セッションから現在のユーザー オブジェクトを削除し、ログアウトの成功を示すメッセージを返します。
ユーザー ログイン システムを実装しましたが、他のビューを保護するためにそれを使用するわけではありません。この例では、ユーザーがログインしている場合にのみアクセスできる「profile」というページを保護します。ユーザーがログインしていない場合は、ログイン ページにリダイレクトされます。
次のコードを app.py ファイルに追加します:
from flask_login import login_required @app.route("/profile") @login_required def profile(): return f"Welcome, {current_user.id}!"
この例では、login_required
デコレータを使用して「profile」ルートを保護します。ユーザーがログインしていない場合、このデコレータはログイン ページにリダイレクトします。
ビューを保護するときは、current_user
グローバル変数を使用して、現在ログインしているユーザーの情報にアクセスします。この例では、現在ログインしているユーザーの ID を含む単純なウェルカム メッセージを追加します。
これで、ユーザー ログイン システムのすべての実装が完了しました。アプリケーションを実行してテストしてみましょう。
ターミナルに次のコマンドを入力してアプリケーションを起動します:
python app.py
ブラウザに次の URL を入力してホームページにアクセスします:
http://localhost:5000/
「Hello World」が表示されるはずです。 !" 弦。次に、次の URL にアクセスしてみます。
http://localhost:5000/profile
あなたは認証されたユーザーではないため、ログイン ページにリダイレクトされます。クエリ文字列に有効なユーザー ID とパスワードを入力します。例:
http://localhost:5000/login?user_id=1&password=password123
正しいユーザー名とパスワードを入力すると、「ログイン成功!」というメッセージが表示されます。ここで、「/profile」ルートに再度アクセスすると、現在ログインしているユーザーの ID を含むウェルカム メッセージが表示されるはずです。
如果你在浏览器中访问以下URL,则可以注销当前会话:
http://localhost:5000/logout
这样就完成了用户登录系统的所有实现。
总结
在本文中,我们介绍了如何使用Flask-Login扩展在Python服务器中实现用户登录功能。使用Flask-Login可以方便地验证和保护Web应用程序中的用户数据。此外,Flask-Login提供了许多有用的功能和方法,如会话管理和用户保护。希望这篇文章能够帮助你更好地了解如何使用Flask-Login编写Python服务器应用程序。
以上がPython サーバー プログラミング: Flask-Login を使用してユーザー ログインを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。