Flask-login har faktiskt ingen användarbackend, den hanterar bara sessionsmaskineriet för att hjälpa dig att logga in och logga ut användare. Du måste berätta för den (genom att dekorera metoder), vad som representerar en användare och det är också upp till dig att ta reda på om en användare är "aktiv" eller inte (eftersom att vara "aktiv" kan betyda olika saker i olika applikationer ).
Du bör läsa dokumentationen och vara säker på vad den gör och inte gör . Här kommer jag bara att koncentrera mig på att koppla upp den med db-backend.
Till att börja med, definiera ett användarobjekt; som representerar egenskaper för dina användare. Detta objekt kan sedan fråga databaser, eller LDAP, eller vad som helst och det är kroken som kopplar inloggningsmekanismen med din databas backend.
Jag kommer att använda inloggningsexemplet skript för detta ändamå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 skapat användarobjektet måste du skriva en metod som laddar användaren (skapar i princip en instans av User
klass uppifrån). Denna metod anropas med användar-id.
@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 dessa steg gör din inloggningsmetod detta:
-
Kontrollerar om användarnamnet och lösenordet matchar (mot din databas) - du måste skriva den här koden själv.
-
Om autentiseringen lyckades ska du skicka en instans av användaren till
login_user()