Flask-login har faktisk ikke en bruger-backend, det håndterer bare sessionsmaskineriet for at hjælpe dig med at logge ind og ud af brugere. Du skal fortælle det (ved at dekorere metoder), hvad der repræsenterer en bruger, og det er også op til dig at finde ud af, hvordan du kan vide, om en bruger er "aktiv" eller ej (da at være "aktiv" kan betyde forskellige ting i forskellige applikationer ).
Du bør læse dokumentationen og vær sikker på, hvad den gør og ikke gør . Her vil jeg kun koncentrere mig om at forbinde det med db-backend.
Til at starte med skal du definere et brugerobjekt; som repræsenterer egenskaber for dine brugere. Dette objekt kan derefter forespørge databaser, eller LDAP, eller hvad som helst, og det er krogen, der forbinder login-mekanismen med din database-backend.
Jeg vil bruge logineksemplet script til dette formål.
class User(UserMixin):
def __init__(self, name, id, active=True):
self.name = name
self.id = id
self.active = active
def is_active(self):
# Here you should write whatever the code is
# that checks the database if your user is active
return self.active
def is_anonymous(self):
return False
def is_authenticated(self):
return True
Når du har oprettet brugerobjektet, skal du skrive en metode, der indlæser brugeren (grundlæggende opretter en instans af User
klasse fra oven). Denne metode kaldes med bruger-id'et.
@login_manager.user_loader
def load_user(id):
# 1. Fetch against the database a user by `id`
# 2. Create a new object of `User` class and return it.
u = DBUsers.query.get(id)
return User(u.name,u.id,u.active)
Når du har disse trin, gør din login-metode dette:
-
Kontrollerer, om brugernavnet og adgangskoden stemmer overens (mod din database) - du skal selv skrive denne kode.
-
Hvis godkendelsen lykkedes, skal du sende en forekomst af brugeren til
login_user()