Flask-Login определяет переменную current_user, которая, с виду, содержит или объект аутентифицированного пользователя, или объект-заглушку в случае неаутентифицированного; данная переменная доступна в контексте запроса. Переменная является объектом LocalProxy, которая лишь маскируется под настоящий объект и, в целом, в контексте запроса с использованием ее практически не возникает проблем.
1 |
db.session.add(current_user) |
Код, в случае использования Flask-SQLAlchemy, отработает правильно и без проблем, тк db.session так же завязан на текущий контекст запроса, но если current_user будет передаваться вне этого контекста – это может привести к неприятным последствиям, например, окажется несвязанный LocalProxy объект или другой пользователь в нем.
Для того чтобы получить реальный объект пользователя существует LocalProxy._get_current_object
1 |
real_object = current_user._get_current_object() |
В целом current_user удобный инструмент, который можно использовать в 90% случаев, так где нужен реальный объект, получить его можно через current_user._get_current_object().