Flask-login heeft niet echt een gebruikersbackend, het behandelt alleen de sessiemachines om u te helpen bij het inloggen en uitloggen van gebruikers. Je moet het vertellen (door decoratiemethoden), wat een gebruiker vertegenwoordigt en het is ook aan jou om erachter te komen hoe je kunt weten of een gebruiker "actief" is of niet (aangezien "actief" verschillende dingen kan betekenen in verschillende toepassingen ).
Lees de documentatie en wees zeker wat het doet en niet doet . Hier ga ik me alleen concentreren op de bedrading met de db-backend.
Definieer om te beginnen een gebruikersobject; die eigenschappen voor uw gebruikers vertegenwoordigt. Dit object kan dan databases opvragen, of LDAP, of wat dan ook, en het is de hook die het inlogmechanisme verbindt met uw database-backend.
Ik zal het inlogvoorbeeld gebruiken script voor dit doel.
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
Nadat u het gebruikersobject hebt gemaakt, moet u een methode schrijven die de gebruiker laadt (in feite maakt u een instantie van de User
klasse van bovenaf). Deze methode wordt aangeroepen met de gebruikers-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)
Zodra u deze stappen heeft doorlopen, doet uw inlogmethode dit:
-
Controleert of de gebruikersnaam en het wachtwoord overeenkomen (in uw database) - u moet deze code zelf schrijven.
-
Als de authenticatie is gelukt, moet u een instantie van de gebruiker doorgeven aan
login_user()