mit flask-login mit postgresql
Arbeite ich an einem Kolben app muss die Authentifizierung. Ich habe angeschlossen Kolben-login, aber es scheint nicht sehr anmutig.
Ersten Kolben-Anmeldung benötigt, um sicherzustellen, dass der Benutzer vorhanden ist:
@login_manager.user_loader
def load_user(id):
return User.query.get(id)
Aber Sie müssen auch verwenden Sie 'login_user' zu erstellen, die Benutzer-Objekt -
# Some code above
user = User.query.filter_by(email = form.email.data, password = form.password.data).first()
user.login_status = 1
db.session.commit()
login_user(objects.SignedInUser(user.id, user.email, user.login_status == LoginStatus.Active))
# Some code below
In den obigen code 'User' ist ein Modell für postgres und SignedInUser wird nur ein Objekt verwendet werden, für Kolben-login.
Hat jemand ein Beispiel von flask-login verwendet mit postgres?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie vielleicht Missverständnis, was Kolben-Login verarbeitet. Es ist da, um den überblick zu behalten über die Benutzer-session nachdem Sie sagen, dass es die Authentifizierung erfolgreich war (durch Aufruf
login_user
.) Dieuser_loader
Rückruf nur erzählt, wie Sie die reload-Objekt für einen Benutzer, der bereits authentifiziert wurde, wie z.B. wenn jemand verbindet sich mit einem "remember me" - session. Die docs sind nicht besonders klar.Sollte es keine Notwendigkeit zu halten ein flag in der Datenbank für die Benutzer-login-status. Auch der code, den Sie enthalten, zu erhöhen wird ein AttributeError wenn Sie die Anmeldeinformationen falsch sind (user = None).
Hier ist ein Beispiel aus einer Flask-SQLAlchemy-Anwendung. Es verwendet eine externe Authentifizierungs-Quelle und einen wrapper für die SQLAlchemy-Benutzer-Objekt, aber der Prozess ist im Grunde das gleiche.
user_loader callback:
User-Klasse (wrapper für SQLAlchemy-Objekt):
Login-handler:
Beachten Sie, dass die Anmeldung schlägt fehl, wenn:
login_user
"False" zurückgibt (user.is_active() == False
)Logout