我想存储每个用户登录的时间和日期。 将此代码放入常规登录视图很简单。
当使用Flask-Login's remember_me时出现问题 - 不再登录登录,因此无法知道登录是否新鲜。
我尝试过Flask-Login提供的user_logged_in,user_login_confirmed信号:
def user_logged_in_callback(*args, **kwargs):
import ipdb;ipdb.set_trace()
user_logged_in.connect(user_logged_in_callback, app)
user_login_confirmed.connect(user_logged_in_callback, app)
user_logged_in仅在常规登录时调用,而且似乎根本没有调用user_login_confirms。
答案 0 :(得分:3)
登录后再次获取用户称为“用户加载”并且实际上不是登录事件,它仍然是同一个用户。 There is a signal for it,但没有记录。
您可以使用user_loaded_from_cookie
信号:
from flask_login import user_loaded_from_cookie
user_loaded_from_cookie.connect(user_login_callback, app)
user_login_confirm
用于刷新登录时 - 需要重新登录并且用户重新输入密码。
如果您要做的只是记录用户上次访问该网站的时间,您只需使用app.before_request
,就不需要处理登录事件。
@app.before_request
def track_user():
if current_user.is_authenticated():
current_user.last_seen = datetime.utcnow()