我不認爲該信息以受支持的方式存在。我的理解是,用戶認證系統使用SessionMiddleware來存儲會話是否具有與其關聯的已認證用戶。爲了澄清,當用戶登錄時,會話存儲數據,表明另一方的客戶端是用戶這樣那樣的。
你需要做的是遍歷所有的會話,並確定會話是否有關聯的用戶,如果是,那麼該用戶是誰。據我所知,無法遍歷會話,但我可能是錯的。
從this answer我發現了一種可以達到同樣效果的方法。
from django.contrib.auth.signals import user_logged_in, user_logged_out
def record_user_logged_in(sender, user, request, **kwargs):
# Record the user logged in
def record_user_logged_out(sender, user, request, **kwargs):
# Record the user logged out
user_logged_in.connect(record_user_logged_in)
user_logged_out.connect(record_user_logged_out)
我把它留給你爲如何存儲信息pertained到登錄/退出,但模式將是這樣做的一個很好的方式。我應該指出,我不認爲這涵蓋了用戶證書超時的情況(從會話超時)。
另外,我剛剛遇到了this answer其中鏈接here這是一個跟蹤活動用戶的項目。我不知道它增加了多少開銷,但只是想我會添加它。
你是指編寫單元測試嗎? –
@YerayDiazDiaz:不是在這種情況下,但我可能需要它在未來的測試。 –
我很好奇背後的用例是什麼?對於「已登錄」的編碼在典型的基於HTTP的客戶端 - 服務器應用程序中可能是一個具有挑戰性的概念。例如。 is_authenticated()告訴您請求用戶是否已通過身份驗證,但在請求到達服務器時,他們可能已關閉瀏覽器窗口。我之前有過同樣的問題,但意識到我正在尋找錯誤的東西。 –