Flask-login ve skutečnosti nemá uživatelský backend, pouze obsluhuje mechanismy relace, které vám pomohou přihlásit a odhlásit uživatele. Musíte mu říct (způsobem zdobení), co představuje uživatele, a je také na vás, abyste zjistili, jak zjistit, zda je uživatel „aktivní“ nebo ne (protože „aktivní“ může v různých aplikacích znamenat různé věci ).
Měli byste si přečíst dokumentaci a ujistěte se, co dělá a nedělá . Zde se budu soustředit pouze na propojení s backendem db.
Chcete-li začít, definujte objekt uživatele; který představuje vlastnosti pro vaše uživatele. Tento objekt se pak může dotazovat na databáze nebo LDAP nebo cokoli jiného a je to hák, který spojuje přihlašovací mechanismus s vaším databázovým backendem.
Budu používat příklad přihlášení skript pro tento účel.
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
Jakmile vytvoříte objekt uživatele, musíte napsat metodu, která načte uživatele (v podstatě vytvoří instanci User
třídy shora). Tato metoda se volá s ID uživatele.
@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)
Jakmile provedete tyto kroky, způsob přihlášení provede toto:
-
Zkontroluje, zda se uživatelské jméno a heslo shodují (s vaší databází) – tento kód musíte napsat sami.
-
Pokud byla autentizace úspěšná, měli byste předat instanci uživatele do
login_user()