2014-11-03 3 views
2

Я хотел бы сохранить время и дату для каждого входа пользователя. Вводя этот код в обычный режим входа в систему, прост.Определите, когда пользователь регистрируется через обычный логин или через memor_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 приведет к потоку моего db с данными. – TheOne

+0

Это отсутствует в документах, но я видел его в источнике. – TheOne

+0

Вы проверяете этот сигнал? Кажется, что это никогда не вызывается. – TheOne