O Flask-login na verdade não tem um backend de usuário, ele apenas lida com o maquinário de sessão para ajudá-lo a fazer login e logout de usuários. Você tem que dizer (por métodos de decoração), o que representa um usuário e também cabe a você descobrir como saber se um usuário está "ativo" ou não (já que estar "ativo" pode significar coisas diferentes em diferentes aplicativos ).
Você deve ler a documentação e tenha certeza do que ele faz e não faz . Aqui eu vou me concentrar apenas em conectá-lo com o back-end db.
Para começar, defina um objeto de usuário; que representa propriedades para seus usuários. Este objeto pode então consultar bancos de dados, ou LDAP, ou qualquer outra coisa e é o gancho que conecta o mecanismo de login com seu backend de banco de dados.
Usarei o exemplo de login roteiro para este fim.
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
Depois de criar o objeto de usuário, você precisa escrever um método que carregue o usuário (basicamente, cria uma instância do
User
classe de cima). Este método é chamado com o ID do usuário. @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)
Depois de seguir essas etapas, seu método de login faz isso:
-
Verifica se o nome de usuário e a senha correspondem (em relação ao seu banco de dados) - você precisa escrever este código você mesmo.
-
Se a autenticação foi bem sucedida, você deve passar uma instância do usuário paralogin_user()