Flask-login in realtà non ha un back-end utente, gestisce solo il macchinario della sessione per aiutarti ad accedere e disconnettere gli utenti. Devi dirlo (attraverso i metodi di decorazione), cosa rappresenta un utente e sta anche a te capire come sapere se un utente è "attivo" o meno (poiché essere "attivo" può significare cose diverse in diverse applicazioni ).
Dovresti leggere la documentazione e assicurati di cosa fa e non . Qui mi concentrerò solo sul cablaggio con il backend db.
Per cominciare, definisci un oggetto utente; che rappresenta le proprietà per i tuoi utenti. Questo oggetto può quindi interrogare database, o LDAP o qualsiasi altra cosa ed è l'hook che collega il meccanismo di accesso con il back-end del tuo database.
Userò l'esempio di accesso script per questo scopo.
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
Una volta creato l'oggetto utente, devi scrivere un metodo che carichi l'utente (in pratica crea un'istanza di User
classe dall'alto). Questo metodo viene chiamato con l'ID utente.
@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)
Dopo aver eseguito questi passaggi, il tuo metodo di accesso fa questo:
-
Verifica se il nome utente e la password corrispondono (contro il tuo database):devi scrivere tu stesso questo codice.
-
Se l'autenticazione ha avuto successo dovresti passare un'istanza dell'utente a
login_user()