Mysql
 sql >> Base de données >  >> RDS >> Mysql

flask-login :je ne comprends pas comment cela fonctionne

Flask-login n'a pas réellement de backend utilisateur, il gère simplement la machinerie de session pour vous aider à vous connecter et à vous déconnecter des utilisateurs. Vous devez lui dire (en décorant les méthodes), ce qui représente un utilisateur et c'est aussi à vous de comprendre comment savoir si un utilisateur est "actif" ou non (car être "actif" peut signifier différentes choses dans différentes applications ).

Vous devriez lire la documentation et soyez sûr de ce qu'il fait et ne fait pas . Ici, je vais seulement me concentrer sur le câblage avec le backend db.

Pour commencer, définissez un objet utilisateur ; qui représente les propriétés de vos utilisateurs. Cet objet peut alors interroger des bases de données, ou LDAP, ou quoi que ce soit et c'est le crochet qui connecte le mécanisme de connexion à votre backend de base de données.

Je vais utiliser l'exemple de connexion script à cet effet.

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

Une fois que vous avez créé l'objet utilisateur, vous devez écrire une méthode qui charge l'utilisateur (en gros, crée une instance de User classe d'en haut). Cette méthode est appelée avec l'identifiant de l'utilisateur.

@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)

Une fois que vous avez suivi ces étapes, votre méthode de connexion fait ceci :

  1. Vérifie si le nom d'utilisateur et le mot de passe correspondent (par rapport à votre base de données) - vous devez écrire ce code vous-même.

  2. Si l'authentification a réussi, vous devez transmettre une instance de l'utilisateur à login_user()