Атрибут anonymous_user
Атрибут anonymous_user принадлежит классу LoginManager из расширения Flask-Login. Он хранит класс или экземпляр, который возвращается свойством current_user, когда в текущей сессии нет аутентифицированного пользователя. По умолчанию атрибут указывает на AnonymousUserMixin, но его можно заменить собственным классом, чтобы добавить анонимному пользователю дополнительные атрибуты или методы.
Синтаксис
login_manager.anonymous_user = CustomAnonymousUser
Пример
Давайте создадим простое приложение с Flask-Login и посмотрим, какой объект возвращается в current_user для гостя:
from flask import Flask, render_template
from flask_login import LoginManager, current_user
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager(app)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
Шаблон выведет имя класса текущего пользователя:
<p>{{ current_user.__class__.__name__ }}</p>
Результат выполнения кода для неаутентифицированного пользователя:
<p>AnonymousUserMixin</p>
Пример
Давайте заменим стандартный анонимный класс на собственный с дополнительным атрибутом:
from flask import Flask, render_template
from flask_login import LoginManager, current_user
from flask_login.mixins import AnonymousUserMixin
app = Flask(__name__)
app.secret_key = 'secret'
class CustomAnonymousUser(AnonymousUserMixin):
role = 'guest'
login_manager = LoginManager(app)
login_manager.anonymous_user = CustomAnonymousUser
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
Шаблон выведет роль текущего пользователя:
<p>{{ current_user.role }}</p>
Результат выполнения кода для неаутентифицированного пользователя:
<p>guest</p>
Смотрите также
-
класс
LoginManager,
который управляет аутентификацией в приложении -
атрибут
login_view,
который задает имя функции для страницы входа -
класс
AnonymousUserMixin,
который используется по умолчанию для анонимного пользователя -
метод
get_id,
который возвращает идентификатор пользователя