确定用户何时通过常规登录或remember_me进行登录

时间:2014-11-03 22:40:56

标签: flask flask-login

我想存储每个用户登录的时间和日期。 将此代码放入常规登录视图很简单。

当使用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。

1 个答案:

答案 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()