Mysql
 sql >> Baza danych >  >> RDS >> Mysql

kolba-login:nie rozumiem, jak to działa

Flask-login tak naprawdę nie ma zaplecza użytkownika, obsługuje tylko maszynerię sesji, aby pomóc w logowaniu i wylogowywaniu użytkowników. Musisz powiedzieć (za pomocą metod dekorowania), co reprezentuje użytkownika, a także od Ciebie zależy, jak dowiedzieć się, czy użytkownik jest „aktywny”, czy nie (ponieważ bycie „aktywnym” może oznaczać różne rzeczy w różnych aplikacjach ).

Powinieneś przeczytać dokumentację i upewnij się, co robi a czego nie . Tutaj skoncentruję się tylko na okablowaniu go z backendem db.

Na początek zdefiniuj obiekt użytkownika; który reprezentuje właściwości dla Twoich użytkowników. Ten obiekt może następnie wysyłać zapytania do baz danych, LDAP lub czegokolwiek innego i jest to hak, który łączy mechanizm logowania z zapleczem Twojej bazy danych.

Użyję przykładu logowania skrypt do tego celu.

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

Po utworzeniu obiektu użytkownika należy napisać metodę, która ładuje użytkownika (w zasadzie tworzy instancję User klasa z góry). Ta metoda jest wywoływana z identyfikatorem użytkownika.

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

Gdy wykonasz te czynności, twoja metoda logowania zrobi to:

  1. Sprawdza, czy nazwa użytkownika i hasło są zgodne (w Twojej bazie danych) - musisz sam napisać ten kod.

  2. Jeśli uwierzytelnianie się powiodło, powinieneś przekazać instancję użytkownika do login_user()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD 1452 (23000):Nie można dodać lub zaktualizować wiersza podrzędnego:ograniczenie klucza obcego nie powiodło się

  2. Największa wartość z wielu kolumn z nazwą kolumny?

  3. MySQL :suma każdego dnia

  4. Jak zaktualizować kolumnę typu danych JSON w MySQL 5.7.10?

  5. MySQL INSERT SELECT — Zduplikowane wiersze