2014-11-03 44 views
2

我想存储每个用户登录的时间和日期。 将此代码放入常规登录视图非常简单。确定用户何时通过常规登录或通过remember_me记录

使用Flask-Login's remember_me时出现问题 - 登录不再被称为让我无法知道登录是否新鲜。

我曾尝试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似乎并没有在所有调用。

回答

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() 
+0

感谢这似乎并没有信号记录;你在哪里找到它?我需要一个所有登录日志并存储每个before_request调用会使我的数据库泛滥。 – TheOne 2014-11-04 04:54:38

+0

它从文档中丢失,但我在源文件中看到它。 – TheOne 2014-11-04 04:58:53

+0

你测试那个信号吗?它似乎没有被调用过。 – TheOne 2014-11-04 15:27:11