Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

frasco-login:não consigo entender como funciona


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:

  1. 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.

  2. Se a autenticação foi bem sucedida, você deve passar uma instância do usuário para login_user()