mit Flask-Login mit Postgresql

8

Ich arbeite an einer Flaschen-App, die eine Authentifizierung benötigt. Ich habe Flaschen-Login angeschlossen, aber es scheint nicht sehr anmutig.

Der erste flask-login muss sicherstellen, dass der Benutzer existiert:

%Vor%

Sie müssen aber auch "login_user" verwenden, um das Benutzerobjekt zu erstellen

%Vor%

Im obigen Code ist 'Benutzer' ein Modell für Postgres und SignedInUser ist nur ein Objekt, das für Flask-Login verwendet wird.

Hat jemand ein Beispiel für Flask-Login mit Postgres verwendet?

    
Jay 01.02.2012, 12:36
quelle

1 Antwort

35

Es sieht so aus, als würden Sie Missverständnis haben, was Flask-Login handhabt. Es ist da, um alles über die Sitzung des Benutzers zu verfolgen, nachdem Sie ihm mitgeteilt haben, dass die Authentifizierung erfolgreich war (durch Aufruf von login_user ). Der user_loader Callback sagt nur, wie das Objekt für einen Benutzer, der bereits authentifiziert wurde, neu geladen wird wenn sich jemand wieder mit einer "Remember me" -Sitzung verbindet. Die Dokumente sind nicht besonders klar.

Es sollte nicht notwendig sein, ein Flag in der Datenbank für den Anmeldestatus des Benutzers zu behalten. Außerdem verursacht der enthaltene Code einen Attributfehler, wenn die Anmeldeinformationen nicht korrekt sind (user = None).

Hier ist ein Beispiel aus einer Flask-SQLAlchemy-Anwendung. Es verwendet eine externe Authentifizierungsquelle und einen Wrapper für das SQLAlchemy User-Objekt, aber der Prozess ist im Grunde der gleiche.

user_loader Rückruf:

%Vor%

Benutzerklasse (Wrapper für SQLAlchemy-Objekt):

%Vor%

Login-Handler:

%Vor%

Beachten Sie, dass die Anmeldung fehlschlägt, wenn:

  • externe Authentifizierung schlägt fehl
  • Benutzerabfrage gibt None zurück (Benutzer existiert nicht)
  • login_user gibt False ( user.is_active() == False )
  • zurück

Abmelden

%Vor%     
robots.jpg 07.02.2012, 20:07
quelle

Tags und Links