Mysql
 sql >> Database >  >> RDS >> Mysql

flask-login:non riesco a capire come funziona

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:

  1. Verifica se il nome utente e la password corrispondono (contro il tuo database):devi scrivere tu stesso questo codice.

  2. Se l'autenticazione ha avuto successo dovresti passare un'istanza dell'utente a login_user()