2014-11-03 29 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