如何获取当前登录Flask-Login的用户列表?

Tam*_*pta 5 python flask flask-sqlalchemy flask-login

在我的Flask-SQLAlchemy Web 应用程序中,我实现了Flask-Login用于用户身份验证和授权。现在我正在构建一个管理部分,管理员用户可以在其中添加、编辑或删除任何用户并查看用户列表。因此,在删除任何用户之前,我想知道该用户当前是否从某处登录到应用程序,或者只是与 Web 应用程序进行任何活动会话。我怎样才能做到这一点呢?或者这在应用程序级别是否可能?

[注意:如您所见,这不是关于 current_user.is_authenticated]

nos*_*wah 4

您必须自己实现此功能,因为没有办法使用flask-login.

我可以想到多种方法来做到这一点,但最快的可能就是跟踪用户上次访问您的网站的时间。然后,您可以设置一个合理的值timeout,如果用户在过去 30 分钟内(或您认为合适的时间)没有执行任何操作,则假定用户未登录

例如:

@app.before_request
def update_last_active():
    current_user.last_active = datetime.utcnow()
    db.session.commit()
Run Code Online (Sandbox Code Playgroud)

User.last_active每次用户向您的服务器发送请求时,这都会更新。

  • 出色的!简单又容易!肯定会尝试一下。但在此之前我有几个问题。首先,为每个用户请求更新数据库对系统来说不是一个很大的开销吗?有什么方法可以在不操作数据库的情况下实现这一点吗?其次,如何为flask-login设置会话cookie超时?最后 - 我应该将此方法放在我的应用程序包 init.py 文件中吗? (2认同)