Класс UserMixin
Класс UserMixin применяется для создания
модели пользователя в Flask-Login. Он избавляет
от необходимости вручную реализовывать четыре
обязательных атрибута и один метод. Достаточно
унаследовать свою модель от этого класса, чтобы
она сразу подходила для аутентификации.
Класс предоставляет следующие элементы:
is_authenticated, is_active,
is_anonymous и метод get_id.
Все они возвращают значения по умолчанию, которые
подходят для большинства приложений.
Синтаксис
from flask_login import UserMixin
class User(UserMixin):
pass
Пример
Давайте создадим модель пользователя, унаследованную
от UserMixin, и проверим значения атрибутов:
from flask_login import UserMixin
class User(UserMixin):
def __init__(self, id):
self.id = id
user = User(1)
print(user.is_authenticated)
print(user.is_active)
print(user.is_anonymous)
print(user.get_id())
Результат выполнения кода:
True
True
False
"1"
Пример
Давайте используем модель вместе с LoginManager
и загрузим пользователя в сессию:
from flask import Flask
from flask_login import UserMixin, LoginManager, login_user
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager()
login_manager.init_app(app)
class User(UserMixin):
def __init__(self, id):
self.id = id
@login_manager.user_loader
def load_user(user_id):
return User(user_id)
@app.route('/login')
def login():
user = User(1)
login_user(user)
return 'logged in'
Результат выполнения кода для адреса /login:
logged in
Пример
Давайте переопределим метод get_id, чтобы
он возвращал строковое представление идентификатора:
from flask_login import UserMixin
class User(UserMixin):
def __init__(self, id):
self.id = id
def get_id(self):
return str(self.id)
user = User(42)
print(user.get_id())
Результат выполнения кода:
"42"
Смотрите также
-
класс
LoginManager,
который управляет аутентификацией -
метод
user_loader,
который загружает пользователя по id -
функцию
login_user,
которая выполняет вход пользователя -
класс
AnonymousUserMixin,
который представляет анонимного пользователя