Flask-login всъщност няма потребителски бекенд, той просто обработва механизмите на сесията, за да ви помогне да влизате и излизате от потребителите. Трябва да му кажете (чрез методи за декориране), какво представлява потребител и също така зависи от вас да разберете как да разберете дали потребителят е „активен“ или не (тъй като „активен“ може да означава различни неща в различните приложения ).
Трябва да прочетете документацията и бъдете сигурни какво прави и какво не прави . Тук ще се съсредоточа само върху свързването му с бекенда на db.
За да започнете с, дефинирайте потребителски обект; който представлява свойства за вашите потребители. След това този обект може да прави заявки към бази данни или LDAP, или каквото и да е и това е куката, която свързва механизма за влизане с вашата база данни.
Ще използвам примера за вход скрипт за тази цел.
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
След като създадете потребителския обект, трябва да напишете метод, който зарежда потребителя (по принцип създава екземпляр на User
клас отгоре). Този метод се извиква с потребителския идентификатор.
@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)
След като направите тези стъпки, вашият метод за влизане прави това:
-
Проверява дали потребителското име и паролата съвпадат (срещу вашата база данни) - трябва да напишете този код сами.
-
Ако удостоверяването е било успешно, трябва да предадете екземпляр на потребителя на
login_user()