sql >> Base de Datos >  >> RDS >> Mysql

matraz de inicio de sesión:no puedo entender cómo funciona

Flask-login en realidad no tiene un backend de usuario, solo maneja la maquinaria de la sesión para ayudarlo a iniciar y cerrar sesión de los usuarios. Tienes que decirle (mediante métodos de decoración), lo que representa a un usuario y también depende de ti averiguar si un usuario está "activo" o no (ya que estar "activo" puede significar diferentes cosas en diferentes aplicaciones ).

Debe leer la documentación y asegúrese de lo que hace y no hace . Aquí solo me concentraré en conectarlo con el backend de db.

Para empezar, defina un objeto de usuario; que representa propiedades para sus usuarios. Este objeto luego puede consultar bases de datos, LDAP o lo que sea, y es el gancho que conecta el mecanismo de inicio de sesión con el backend de su base de datos.

Usaré el ejemplo de inicio de sesión guión para este propósito.

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 vez que haya creado el objeto de usuario, debe escribir un método que cargue al usuario (básicamente, crea una instancia del User clase desde arriba). Este método se llama con la identificación del usuario.

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

Una vez que tenga estos pasos, su método de inicio de sesión hace esto:

  1. Comprueba si el nombre de usuario y la contraseña coinciden (con su base de datos); debe escribir este código usted mismo.

  2. Si la autenticación fue exitosa, debe pasar una instancia del usuario a login_user()