Heim >Backend-Entwicklung >Python-Tutorial >So führen Sie die Benutzerauthentifizierung mit Flask-Login durch

So führen Sie die Benutzerauthentifizierung mit Flask-Login durch

Lisa Kudrow
Lisa KudrowOriginal
2025-02-09 08:47:13421Durchsuche

So führen Sie die Benutzerauthentifizierung mit Flask-Login durch

In diesem Artikel werden wir uns die verschiedenen Funktionen ansehen, die Flask-Login anbietet, und wie sie mit ihnen eine sichere Benutzeranmeldungsfunktion für Ihre Webanwendung erstellen. Am Ende dieses Artikels haben Sie ein gutes Verständnis dafür, wie Sie Flask-Login verwenden, um eine sichere Benutzerauthentifizierung in Ihren Flask-Anwendungen zu implementieren.

Authentifizierung ist ein wichtiger Bestandteil einer Webanwendung, mit der Benutzer auf Daten oder Ressourcen zugreifen können, da nur die richtigen Personen Zugriff auf vertrauliche Informationen erhalten. Dies kann auch im Kolben unter Verwendung des Flaskendlogins erreicht werden.

Flask-Login ist eine Erweiterung im Flask mit Funktionen, die die Protokollierung und die Anmeldung von Benutzern abwickeln und die aktuellen Benutzer während der gesamten Anwendung verfolgen. Dies erleichtert die Implementierung der Authentifizierung und Autorisierung in Ihren Flask -Anwendungen.

Key Takeaways

  • Eine einfache Authentifizierung mit Flask-Login: Flask-Login vereinfacht die Implementierung der Benutzerauthentifizierung in Flask-Anwendungen. Es bietet wesentliche Funktionen wie Benutzersitzungsverwaltung, einfache Login-/Logout -Funktionalität und einen Benutzerloader -Rückruf für die nahtlose Integration in eine Datenbank. Dies hilft bei der effizienten Verwaltung von Benutzersitzungen und zur Behandlung von Authentifizierungsprozessen.
  • Sicherheitskennworthandling und Benutzersitzungsverwaltung: Wir werden die Bedeutung der Kennwortsicherheit mithilfe von Flask-Bcrypt für Hashing-Passwörter detailliert beschreiben und wie Flask-Login Benutzersitzungen mit Session Cookies verwaltet. Dies stellt sicher, dass Benutzeranmeldeinformationen sicher gespeichert werden und dass Benutzersitzungen genau verfolgt werden, was die Gesamtsicherheit der Anwendung verbessert.
  • Praktische Implementierungsanleitung: Wir bieten eine umfassende Anleitung zum Einrichten und Verwenden von Flask-Login, einschließlich des Erstellens von Benutzermodellen, zur Konfiguration einer Datenbank (SQLITE), zum Erstellen von Ansichten für die Registrierung und Anmeldung von Benutzer und die Implementierung der Abmeldelogik mit geschützten Routen. Es bietet einen praktischen Ansatz zum Erstellen eines sicheren Benutzerauthentifizierungssystems in einer Flask -Anwendung, wodurch es auch für diejenigen zugänglich ist, die neu in der Entwicklung von Flask- oder Webanwendungen sind.

Warum Flask-Login verwenden?

Flask-Login verfügt über eine Reihe von Funktionen und Funktionen, mit denen die Authentifizierung in Flask-Anwendungen nahtlos durchgeführt werden kann. Hier sind einige der Vorteile der Verwendung von Flask-Login:

  • Benutzersitzungsverwaltung. Flask-Login behandelt die Erstellung und Zerstörung von Benutzersitzungen. Es kann auch die ID des aktuellen Benutzers in der Sitzung speichern, sodass Sie leicht prüfen können, ob ein Benutzer angemeldet ist.
  • Login- und Abmeldefunktionalität. Flask-Login bietet integrierte Anmelde- und Abmeldefunktionen. Diese Funktionen kümmern sich um alle wichtigen Prozesse, z.
  • Benutzerloader -Rückruf. Mit Flask-Login können Sie einen Benutzerloader-Rückruf definieren. Dieser Rückruf wird verwendet, um das Benutzerobjekt für die aktuelle Sitzung zu laden. Dies ist nützlich, wenn Sie eine Datenbank verwenden, um Benutzerinformationen zu speichern.
  • Authentifizierung und Autorisierung. Flask-Login erleichtert die Implementierung der Authentifizierung und Autorisierung in Ihren Anwendungen. Sie können Flask-Login verwenden, um bestimmte Seiten oder Routen zu schützen und Benutzern unterschiedliche Zugriffsebene auf Ihre Anwendung zu gewähren.
Voraussetzungen

Um mit diesem Artikel lange zu folgen, benötigen Sie Folgendes:

    Ein Wissen über Python und Flask Syntax
  • Ein Grundkenntnis von HTML und CSS
  • Python Version 3 und Flask installiert
Natürlich benötigen Sie auch Zugriff auf einen Webbrowser.

Erste Schritte

Um das Kolben-Anmeldemodul vollständig zu verwenden, müssen uns Flaskendlogin und andere notwendige Abhängigkeiten installiert haben. Diese Bibliotheken bieten die erforderlichen Funktionen und Tools, die erforderlich sind, um die Funktionalität Ihrer App zu verbessern. Öffnen Sie, um sie zu installieren, Ihre Eingabeaufforderung oder Ihr Terminal und führen Sie den folgenden PIP -Befehl aus:

pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
Hier ist eine Aufschlüsselung dessen, was jede dieser Bibliotheken verwendet wird:

    Flask-sqlalchemy: Integriert Sqlalchemy in den Flask für Datenbankoperationen
  • Flask-Bcrypt: Fügt Bcrypt Hashing für Passwortsicherheit in Flask
  • hinzu

Sobald die Installation abgeschlossen ist, wird automatisch das Flask -Login in dem von Ihnen verwendeten Verzeichnis heruntergeladen.

Hinweis: Zum Zeitpunkt des Schreibens gibt es ein geringes Problem bei der Lösung der Abhängigkeiten in der neuesten Version von Flask und Werkzug. Um dies zu beheben, müssen Sie die Installation von Version 2.3.0 von Werkzug erzwingen, da dies die einzige bekannte Version ist, die gerade funktioniert.

Sobald Ihre Abhängigkeiten installiert wurden, müssen Sie sie mit Ihrer Flask -App initialisieren:

<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>

Im obigen Code -Snippet haben wir auch das LoginManager -Objekt in unserer Anwendung initialisiert. LoginManager ist eine Erweiterung des Flask-Logins, mit der die erforderlichen Konfigurationen für die Behandlung von Benutzersitzungen eingerichtet werden können.

Erstellen eines Benutzermodells

Ein Modell ist eine Darstellung der Datenstruktur, die Sie in Ihrer Anwendung verwenden möchten. Es definiert, wie Daten im System organisiert, gespeichert und manipuliert werden. Modelle werden normalerweise mit einer Datenbank verwendet, die der vorher definierten Struktur folgt. Für unsere App haben wir folgende Daten:

  • Eine eindeutige ID
  • ein Benutzername
  • ein Passwort (Hashed)
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>

Sie können Ihrem Benutzermodell auch zusätzliche Eigenschaften hinzufügen, z. B. eine E -Mail -Adresse oder ein Profilbild, abhängig vom Umfang Ihres Projekts.

Erstellen einer Datenbank

Sobald Sie Ihr Benutzermodell definiert haben, müssen Sie eine Datenbank erstellen, die die im Vorgängermodell erstellte Datenstruktur speichert.

Für diesen Artikel werden wir eine SQLite -Datenbank verwenden. Dies liegt daran, dass SQLite eine leichte und serverlose Datenbank -Engine ist. Dies erleichtert die Einrichtung und Verwendung, da keine separate Installation erforderlich ist. Es ist auch eine gute Wahl für kleine bis mittelgroße Anwendungen.

Hier ist eine Aufschlüsselung der Schritte zur Verwendung einer SQLite -Datenbank in unserer Anwendung:

  1. Um die SQLite -Datenbank zu verwenden, müssen Sie eine URI in Ihrer Flask -App -Konfiguration festlegen. Dies geschieht normalerweise neben anderen Konfigurationen oben. Hier ist ein Ausschnitt, den Sie verwenden können:
    <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>

    In diesem Snippet gibt der /// ... den relativen Pfad zu Ihrer Datei an - Site.db - der Name, den wir für unsere SQLite -Datenbankdatei verwendet haben. Dieser Name kann in alles geändert werden, was Sie bevorzugen.

  2. Als nächstes müssen Sie den Flask-SQLalchemy Orm mit diesem Snippet initialisieren:
    <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>

    sqlalchemy ist ein Objektrelations-Mapper, der eine Reihe von Tools für die Arbeit mit Datenbanken mit Python bietet. Die Zeile db = sqlalchemy (App) erstellt eine Instanz der SQLAlchemy -Klasse und bindet sie an Ihre Flask -Anwendung (App).

  3. Um diese Datenbank zu erstellen, müssen wir die Datenbank mit der Methode create_all initialisieren:
    app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>

    Dieser Code wird normalerweise am Ende Ihres Python -Skripts oder in einem separaten Skript platziert, das sich zur Initialisierung der Datenbank widmet. Sobald Sie Ihr Skript ausgeführt haben, wird die Datenbankdatei mit entsprechenden Tabellen erstellt, die auf den zuvor definierten Modellen basieren.

    In diesem Fall erstellt der Code eine Site.db -Datei mit einer Benutzertabelle, wenn er noch nicht vorhanden ist. Die Datei site.db wird normalerweise in einem Ordner namens /Instanz /.

    erhältlich

    So führen Sie die Benutzerauthentifizierung mit Flask-Login durch

Als nächstes müssen wir einen user_loader erstellen, der eine Benutzer -ID nimmt und das entsprechende Benutzerobjekt zurückgibt. Hier ist ein Beispiel:

db <span>= SQLAlchemy(app)</span>

Passwort Hashing

Passworthashing ist eine Sicherheitsmaßnahme, die die kryptografische Darstellung des Benutzerkennworts speichert, bevor es in einer Datenbank gespeichert wird. Auf diese Weise wird es schwieriger, das tatsächliche Passwort zu erhalten, selbst wenn die Sicherheit der Anwendung beeinträchtigt wurde.

Normalerweise wird das Kennwort zunächst im Registrierungsprozess gehasht und in einer Datenbank gespeichert. Jedes Mal, wenn sich ein Benutzer anmeldet, wird sein Passwort erneut gehasht und mit dem in der Datenbank gespeicherten Hashed -Passwort verglichen. Wenn die beiden Passwörter übereinstimmen, wird der Benutzer authentifiziert und erhält Zugriff auf die Anwendung.

wie man Kennwörter mit Flask-Bcrypt

hasht und überprüft.

Flask hat eine Erweiterung namens Flask-Bcrypt, die dazu beiträgt, diese Funktionalität zu erreichen. Es hat zwei Hauptfunktionen: generate_password_hash () und check_password_hash ().

theGenerate_password_hash () Die Funktion des Benutzers nimmt das Kennwort des Benutzers als Argument und gibt ein Hashed -Kennwort zurück. Dies wird normalerweise in der Registrierungslogik verwendet.

Die Funktion check_password_hash () nimmt ein Passwort und ein Hashed -Passwort als Argumente und gibt true zurück, wenn die beiden Passwörter übereinstimmen, oder falsch, wenn sie nicht übereinstimmen. Dies wird aufgerufen, bevor der Zugriff auf die Anmeldeansicht

Zugriff gewährt wird

Erstellen einer Registeransicht

Ansichten sind Teil des Flask -Frameworks, mit dem HTML, JSON oder andere Daten generiert werden, die an den Browser des Benutzers gesendet werden. In diesem Code -Snippet erstellen wir eine Ansicht, die die Eingabe des Benutzers akzeptiert und die Details zur Datenbank hinzufügt:
pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>

Hier ist eine Aufschlüsselung des Code:
  • In der ersten Zeile definieren wir eine Route für den URL -Pfad /die Anmeldung. Diese Route akzeptiert sowohl Get- als auch Post -Anfragen. Die mit der Route verbundene Login () -Funktion wird ausgeführt, wenn eine Anfrage gestellt wird.
  • <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>
    Als nächstes bestätigen wir, ob die Anforderungsmethode eine Post -Methode ist:

    Sobald es bestätigt wurde, ruft die Funktion die vom Benutzer eingegebenen Werte in das Anmeldeformular ab:
    <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>
  • Es wird dann die Datenbank für einen Benutzer mit dem bereitgestellten Benutzernamen abgefragt. Wenn ein Benutzer mit dem bereitgestellten Benutzernamen gefunden wird und das Kennwort übereinstimmt, wird der Code in diesem Block ausgeführt.

Erstellen einer Anmeldeansicht

In der Anmeldeansicht erstellen wir eine Logik, die Eingaben von einer Seite akzeptiert, und prüft dann, ob die Eingabe in der Datenbank mit einer Zeile übereinstimmt:
app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>

Hier ist eine Aufschlüsselung darüber, wie der Code funktioniert:
  • In der ersten Zeile - @App.Route (' /login', methods = ['get', 'post']): - Wir verwenden einen Dekorateur, der eine Route für den URL -Pfad /Login definiert . Die Route akzeptiert sowohl Get- als auch Post -Anfragen. Die zugehörige Funktion, Login (), wird ausgeführt, wenn eine Anfrage an diese Route gestellt wird.
  • db <span>= SQLAlchemy(app)</span>
    Die Funktion Login () beginnt mit der Überprüfung, ob die Anforderungsmethode nach dem Postwerk ist:

    Einmal wurde bestätigt, dass es sich um eine Postanforderung handelt. Es wird die vom Benutzer im Anmeldeformular eingegebenen Werte abgerufen:
    pip <span>install flask-login flask_sqlalchemy flask_bcrypt</span>
  • Es wird dann die Datenbank für einen Benutzer mit dem bereitgestellten Benutzernamen abgefragt:
    <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>
  • Wenn sowohl der Benutzername als auch das Kennwort validiert sind, erhält dem Benutzer den Zugriff mit Login_User- und Umleitungsfunktionen von Flask-Login:
    <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>
  • Wenn die Anforderungsmethode jedoch nicht veröffentlicht wird oder die Details falsch sind, wird die Anmeldung.html -Vorlage wiedergegeben:
    app<span>.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' # Using SQLite as the database</span>

    im Wesentlichen prüft es, ob die eingegebenen Anmeldeinformationen gültig sind, sich in den Benutzer angemeldet und bei Erfolg auf die Begrüßungsseite umgeleitet. Wenn die Anmelde nicht erfolgreich ist oder eine Get -Anfrage ist, wird die Anmeldevorlage für den Benutzer zur Eingabe seiner Anmeldeinformationen rendert.

Erstellen von Abmeldungslogik mit einer geschützten Ansicht

In den meisten Anwendungen sind einige Seiten nicht zugegriffen, wenn der Benutzer nicht angemeldet ist. Dies umfasst Seiten wie Transaktionsverlauf, Entwürfe und Abmeldeseiten. Flask-Login bietet eine bequeme Möglichkeit, diese Seiten/Routen zu schützen und den Zugriff auf authentifizierte Benutzer mit dem Dekorator Login_Required einzuschränken. Hier ist eine Aufschlüsselung der Funktionsweise.

Um diese Funktionalität zu nutzen, müssen Sie den Dekorator Login_Required aus Flask-Login importieren:

db <span>= SQLAlchemy(app)</span>

Als nächstes müssen Sie den Dekorateur Login_Required zu einer beliebigen Route hinzufügen, die Sie schützen möchten. Lassen Sie uns beispielsweise eine Abmeldeseite erstellen, auf die nur zugegriffen werden kann, wenn der Benutzer angemeldet ist:

<span>if __name__ == '__main__':
</span>
db<span>.create_all()
</span>
app<span>.run(debug=True)</span>

Hier ist eine Aufschlüsselung der Funktionsweise:

  • genau wie in der Anmeldeansicht definiert @App.Route (' /logout') eine Route für den URL -Pfad /logout.
  • Als nächstes fügen wir einen Dekorator für Login_Required hinzu, der sicherstellt, dass der Benutzer angemeldet sein muss, um auf die Abmelderoute zuzugreifen. Wenn ein Benutzer nicht angemeldet ist und versucht, auf diese Route zuzugreifen, werden er auf die Anmeldeseite umgeleitet.
  • In der Funktion der Abmeldung wird logout_user () aufgerufen. Diese Funktion wird von Flask-Login bereitgestellt und wird verwendet, um den aktuellen Benutzer abzumelden.
  • Nach dem Auszeichnung des Benutzer
Wenn ein Benutzer auf die Route /Abmeldung zugreift, stellt Flask-Login sicher, dass er angemeldet ist (@login_required). Dies hilft, Benutzeranmeldungen in Ihrer Flask -Anwendung sicher zu behandeln. Der Dekorateur Login_Required wird auf die /geschützte Route angewendet, um anzuzeigen, dass nur authentifizierte Benutzer darauf zugreifen können. Und wenn ein Benutzer versucht, auf eine geschützte Seite zuzugreifen, ohne angemeldet zu werden, leitet Flask-Login sie auf die Anmeldeseite um.

Hinzufügen von Vorlagen

Mit

Vorlagen im Kolben können Sie HTML -Seiten verwenden, um zu definieren, wie Ihre Website aussehen wird. Um die Logik in unserer App.py -Datei vollständig zu implementieren, werden wir die unten abgebildeten HTML -Seiten erstellen.

So führen Sie die Benutzerauthentifizierung mit Flask-Login durch

Die Animation unten zeigt, wie die Vorlagen die verschiedenen Seiten unserer Website rendern.

Sie können den vollständigen Code für dieses Tutorial sehen und mehr über seine Implementierung in der Github -Repository dieses Artikels erfahren.

Wie Flask-Login Benutzersitzungen mit User Session Cookies

verwaltet

Eine Benutzersitzung ist ein System, mit dem Benutzerinformationen verfolgt und aktualisiert werden, während der Benutzer angemeldet ist. Flask-Login verwaltet diese Sitzungen, indem ein Sitzungs-Cookie im Browser des Benutzers gespeichert wird. Das Session Cookie ist ein kleines Datenstück, das eine eindeutige Kennung für die Sitzung des Benutzers enthält.

Wenn sich ein Benutzer über Flask-Login auf einer Website anmeldet, generiert der Server ein Sitzungs-Cookie und sendet es an den Browser des Benutzers. Der Browser speichert das Session Cookie und enthält es in alle Anforderungen an den Server. Der Server verwendet das Sitzungs -Cookie, um den Benutzer und seinen Sitzungsstatus zu identifizieren.

Wenn der Benutzer beispielsweise angemeldet ist und eine von Flask-Login geschützte Seite besucht, überprüfen Flask-Login das Sitzungs-Cookie, um festzustellen, ob der Benutzer authentifiziert ist. Wenn der Benutzer authentifiziert ist, lädt Flask-Login die Profilinformationen des Benutzers aus der Datenbank und stellt sie der Ansicht zur Verfügung. Wenn der Benutzer nicht authentifiziert ist, leitet Flask-Login den Benutzer zur Anmeldeseite um.

Wenn sich der Benutzer aus der Website abmeldet, löscht der Server das Sitzungs -Cookie aus dem Browser des Benutzers, der die Benutzersitzung beendet.

Schlussfolgerung

Flask bietet eine Vielzahl von Funktionen, die verschiedene Aspekte der Authentifizierung ansprechen, die von der Verwaltung der Benutzersitzung bis zur Autorisierung reichen. Durch die Verwendung dieser Funktionen können Sie ein robustes und sicheres Authentifizierungssystem implementieren, das auf die spezifischen Anforderungen Ihrer Anwendung zugeschnitten ist.

Das obige ist der detaillierte Inhalt vonSo führen Sie die Benutzerauthentifizierung mit Flask-Login durch. 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