Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Serverprogrammierung: Verwendung von Flask-Login zur Implementierung der Benutzeranmeldung

Python-Serverprogrammierung: Verwendung von Flask-Login zur Implementierung der Benutzeranmeldung

WBOY
WBOYOriginal
2023-06-18 16:40:591983Durchsuche

Python-Serverprogrammierung: Verwenden Sie Flask-Login, um die Benutzeranmeldung zu implementieren

Mit der Entwicklung und Beliebtheit von Webanwendungen ist die Benutzeranmeldung für viele Anwendungen zu einer wesentlichen Funktion geworden. In der Python-Serverprogrammierung ist Flask ein weit verbreitetes Webentwicklungs-Framework. Darüber hinaus bietet Flask auch viele Erweiterungen von Drittanbietern wie Flask-Login, mit denen wir Benutzeranmeldefunktionen schnell implementieren können.

In diesem Artikel wird erläutert, wie Sie die Flask-Login-Erweiterung verwenden, um die Benutzeranmeldefunktion auf dem Python-Server zu implementieren. Zuvor müssen wir Flask und die Flask-Login-Erweiterung installieren. Zur Installation können Sie den Befehl pip verwenden:

pip install Flask Flask-Login

Beginnen wir nun mit der Implementierung unseres Benutzeranmeldesystems.

  1. Erstellen einer Flask-Anwendung

Zuerst müssen wir eine Flask-Anwendung erstellen. Erstellen Sie eine app.py-Datei im Stammverzeichnis und schreiben Sie den folgenden Code hinein:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello World!"

if __name__ == "__main__":
    app.run(debug=True)

In diesem Beispiel haben wir eine Flask-Anwendung erstellt und eine Route definiert, und die Stammroute gibt „Hello World!“ zurück. Wir verwenden außerdem eine bedingte Anweisung __name__ == "__main__", um sicherzustellen, dass die Flask-Anwendung nur ausgeführt wird, wenn wir das Skript ausführen. __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}>"

在这个示例中,我们定义了一个User类,它继承自Flask-Login的UserMixin类。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对象。然后,我们定义了一个user_loader回调函数,该函数将用户ID作为参数,并返回与该ID对应的用户对象。在本示例中,我们创建了一个新的User对象,并将该ID作为参数传递。

接下来,我们定义了一个登录视图。在视图函数中,我们使用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

Jetzt haben wir erfolgreich eine einfache Flask-Anwendung erstellt.
  1. 2. Benutzermodell erstellen
In diesem Beispiel gehen wir davon aus, dass der Benutzername und das Passwort des Benutzers in der Datenbank gespeichert wurden. Daher müssen wir zuerst das Benutzermodell definieren, damit wir beim Anmelden prüfen können, ob der Benutzer existiert.

Fügen Sie den folgenden Code in die app.py-Datei ein:

python app.py

In diesem Beispiel definieren wir eine Benutzerklasse, die von der UserMixin-Klasse von Flask-Login erbt. UserMixin bietet einige nützliche Eigenschaften und Methoden, darunter:

    is_authenticated: True, wenn der Benutzer authentifiziert wurde.

    is_active: True, wenn der Benutzer aktiv ist.

    is_anonymous: True, wenn der Benutzer nicht authentifiziert ist.

    get_id: Gibt die Zeichenfolgendarstellung der Benutzer-ID zurück. 🎜
🎜Im Konstruktor der User-Klasse übergeben wir die Benutzer-ID. Wir definieren außerdem eine __repr__-Methode, um beim Debuggen und Testen weitere Informationen über das Benutzerobjekt anzuzeigen. 🎜
    🎜Anmeldeansicht schreiben🎜🎜🎜Jetzt müssen wir eine Anmeldeansicht schreiben, die es dem Benutzer ermöglicht, seinen Benutzernamen und sein Passwort einzugeben. Wenn der Benutzername und das Passwort des Benutzers korrekt sind, ist die Anmeldung erfolgreich und das Benutzerobjekt wird zur Benutzersitzung von Flask-Login hinzugefügt. 🎜🎜Fügen Sie den folgenden Code in die app.py-Datei ein: 🎜
    http://localhost:5000/
    🎜In diesem Beispiel erstellen wir zunächst ein LoginManager-Objekt. Anschließend definieren wir eine user_loader-Rückruffunktion, die die Benutzer-ID als Parameter verwendet und das dieser ID entsprechende Benutzerobjekt zurückgibt. In diesem Beispiel erstellen wir ein neues User-Objekt und übergeben die ID als Parameter. 🎜🎜Als nächstes definieren wir eine Login-Ansicht. In der Ansichtsfunktion verwenden wir die Methode request.args.get, um die Benutzer-ID und das Passwort aus der Abfragezeichenfolge abzurufen. Anschließend prüfen wir, ob Benutzer-ID und Passwort gültig sind. Wenn der Benutzername und das Passwort des Benutzers korrekt sind, erstellen Sie ein neues Benutzer-Objekt und fügen Sie das Objekt mithilfe der Funktion login_user zur Benutzersitzung von Flask-Login hinzu. Wenn der Benutzername und das Passwort eines Benutzers falsch sind, kann sich der Benutzer nicht anmelden. 🎜🎜Schließlich definieren wir eine Abmeldeansicht, die die Funktion logout_user verwendet, um das aktuelle Benutzerobjekt aus der Benutzersitzung von Flask-Login zu löschen und eine Meldung über die erfolgreiche Abmeldung zurückgibt. 🎜
      🎜Andere Ansichten schützen🎜🎜🎜Jetzt haben wir das Benutzeranmeldesystem implementiert, verwenden es jedoch nicht zum Schutz anderer Ansichten. In diesem Beispiel schützen wir eine Seite namens „Profil“, auf die nur zugegriffen werden kann, wenn der Benutzer angemeldet ist. Wenn der Benutzer nicht angemeldet ist, wird er zur Anmeldeseite weitergeleitet. 🎜🎜Fügen Sie den folgenden Code in die app.py-Datei ein: 🎜
      http://localhost:5000/profile
      🎜In diesem Beispiel verwenden wir den Dekorator login_required, um die Route „Profil“ zu schützen. Wenn der Benutzer nicht angemeldet ist, leitet dieser Dekorateur zur Anmeldeseite weiter. 🎜🎜Beim Schutz der Ansicht verwenden wir auch die globale Variable current_user, um auf die Informationen des aktuell angemeldeten Benutzers zuzugreifen. In diesem Beispiel fügen wir eine einfache Willkommensnachricht hinzu, die die ID des aktuell angemeldeten Benutzers enthält. 🎜🎜🎜Führen Sie die Anwendung aus🎜🎜🎜Jetzt haben wir die gesamte Implementierung des Benutzeranmeldesystems abgeschlossen. Lassen Sie uns die Anwendung ausführen und testen. 🎜🎜Geben Sie den folgenden Befehl in das Terminal ein, um die Anwendung zu starten: 🎜
      http://localhost:5000/login?user_id=1&password=password123
      🎜Geben Sie die folgende URL in den Browser ein, um auf die Startseite zuzugreifen: 🎜
      http://localhost:5000/logout
      🎜Sie sollten die Zeichenfolge „Hello World!“ sehen. Versuchen Sie nun, auf die folgende URL zuzugreifen: 🎜rrreee🎜 Da Sie kein authentifizierter Benutzer sind, werden Sie zur Anmeldeseite weitergeleitet. Geben Sie eine gültige Benutzer-ID und ein gültiges Passwort in die Abfragezeichenfolge ein, zum Beispiel: 🎜rrreee🎜 Wenn Sie den richtigen Benutzernamen und das richtige Passwort eingegeben haben, sollte die Meldung „Anmeldung erfolgreich!“ angezeigt werden. Greifen Sie nun erneut auf die Route „/profile“ zu und es sollte eine Willkommensnachricht mit der ID des aktuell angemeldeten Benutzers angezeigt werden. 🎜

      如果你在浏览器中访问以下URL,则可以注销当前会话:

      http://localhost:5000/logout

      这样就完成了用户登录系统的所有实现。

      总结

      在本文中,我们介绍了如何使用Flask-Login扩展在Python服务器中实现用户登录功能。使用Flask-Login可以方便地验证和保护Web应用程序中的用户数据。此外,Flask-Login提供了许多有用的功能和方法,如会话管理和用户保护。希望这篇文章能够帮助你更好地了解如何使用Flask-Login编写Python服务器应用程序。

Das obige ist der detaillierte Inhalt vonPython-Serverprogrammierung: Verwendung von Flask-Login zur Implementierung der Benutzeranmeldung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn