sql >> Databasteknik >  >> RDS >> Mysql

flask-login:kan inte förstå hur det fungerar

Flask-login har faktiskt ingen användarbackend, den hanterar bara sessionsmaskineriet för att hjälpa dig att logga in och logga ut användare. Du måste berätta för den (genom att dekorera metoder), vad som representerar en användare och det är också upp till dig att ta reda på om en användare är "aktiv" eller inte (eftersom att vara "aktiv" kan betyda olika saker i olika applikationer ).

Du bör läsa dokumentationen och vara säker på vad den gör och inte gör . Här kommer jag bara att koncentrera mig på att koppla upp den med db-backend.

Till att börja med, definiera ett användarobjekt; som representerar egenskaper för dina användare. Detta objekt kan sedan fråga databaser, eller LDAP, eller vad som helst och det är kroken som kopplar inloggningsmekanismen med din databas backend.

Jag kommer att använda inloggningsexemplet skript för detta ändamå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 skapat användarobjektet måste du skriva en metod som laddar användaren (skapar i princip en instans av User klass uppifrån). Denna metod anropas med användar-id.

@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 dessa steg gör din inloggningsmetod detta:

  1. Kontrollerar om användarnamnet och lösenordet matchar (mot din databas) - du måste skriva den här koden själv.

  2. Om autentiseringen lyckades ska du skicka en instans av användaren till login_user()



  1. Lista alla temporära tabeller i SQLite

  2. Postgresql -bash:psql:kommandot hittades inte

  3. Hur kan jag återställa MySQL root-användarens fullständiga rättigheter?

  4. MySQL COUNT() flera kolumner