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

flask-login:kan ikke forstå, hvordan det virker

Flask-login har faktisk ikke en bruger-backend, det håndterer bare sessionsmaskineriet for at hjælpe dig med at logge ind og ud af brugere. Du skal fortælle det (ved at dekorere metoder), hvad der repræsenterer en bruger, og det er også op til dig at finde ud af, hvordan du kan vide, om en bruger er "aktiv" eller ej (da at være "aktiv" kan betyde forskellige ting i forskellige applikationer ).

Du bør læse dokumentationen og vær sikker på, hvad den gør og ikke gør . Her vil jeg kun koncentrere mig om at forbinde det med db-backend.

Til at starte med skal du definere et brugerobjekt; som repræsenterer egenskaber for dine brugere. Dette objekt kan derefter forespørge databaser, eller LDAP, eller hvad som helst, og det er krogen, der forbinder login-mekanismen med din database-backend.

Jeg vil bruge logineksemplet script til dette formål.

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

Når du har oprettet brugerobjektet, skal du skrive en metode, der indlæser brugeren (grundlæggende opretter en instans af User klasse fra oven). Denne metode kaldes med bruger-id'et.

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

Når du har disse trin, gør din login-metode dette:

  1. Kontrollerer, om brugernavnet og adgangskoden stemmer overens (mod din database) - du skal selv skrive denne kode.

  2. Hvis godkendelsen lykkedes, skal du sende en forekomst af brugeren til login_user()



  1. Forståelse af databaseniveausorteringen og virkningen af ​​at ændre den til en database

  2. PostgreSQL Regex-ordgrænser?

  3. kan ikke indlæse oci8 -> Fatal fejl:Kald til udefineret funktion oci_connect()

  4. Skift SQLAlchemys Session.delete() adfærd