ホームページ  >  記事  >  バックエンド開発  >  Python サーバー プログラミング: Flask-Login を使用してユーザー ログインを実装する

Python サーバー プログラミング: Flask-Login を使用してユーザー ログインを実装する

WBOY
WBOYオリジナル
2023-06-18 16:40:592021ブラウズ

Python サーバー プログラミング: Flask-Login を使用したユーザー ログインの実装

Web アプリケーションの開発と普及により、ユーザー ログインは多くのアプリケーションにとって不可欠な機能になりました。 Python サーバー プログラミングでは、Flask は広く使用されている Web 開発フレームワークです。さらに、Flask はユーザー ログイン機能を迅速に実装するのに役立つ Flask-Login などの多くのサードパーティ拡張機能も提供します。

この記事では、Flask-Login 拡張機能を使用して Python サーバーにユーザー ログイン機能を実装する方法を紹介します。その前に、Flask と Flask-Login 拡張機能をインストールする必要があります。 pip コマンドを使用してインストールできます。

pip install Flask Flask-Login

次に、ユーザー ログイン システムを実装しましょう。

  1. Flask アプリケーションの作成

まず、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__ メソッドも定義します。

  1. ログイン ビューの作成

次に、ユーザーがユーザー名とパスワードを入力できるようにするログイン ビューを作成する必要があります。ユーザーのユーザー名とパスワードが正しい場合、ログインは成功し、ユーザー オブジェクトが 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 のユーザー セッションから現在のユーザー オブジェクトを削除し、ログアウトの成功を示すメッセージを返します。

  1. 他のビューの保護

ユーザー ログイン システムを実装しましたが、他のビューを保護するためにそれを使用するわけではありません。この例では、ユーザーがログインしている場合にのみアクセスできる「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 を含む単純なウェルカム メッセージを追加します。

  1. アプリケーションの実行

これで、ユーザー ログイン システムのすべての実装が完了しました。アプリケーションを実行してテストしてみましょう。

ターミナルに次のコマンドを入力してアプリケーションを起動します:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。