簡體   English   中英

如何知道Django中是否記錄了特定用戶,而不是當前請求用戶?

[英]How can I know if a specific user, not the current requesting user, is logged in Django?

如何知道特定用戶是否登錄Django(不是當前請求的用戶)?

我試過這個:

user = User.objects.get(username="jon")
if user.is_authenticated():
   print "user logged"

但如果username匹配,則總是返回True

簡短的回答是你不能; 至少沒有任何內置於Django的內容。 要知道數據庫中的任何用戶是否已登錄,您實際上是在詢問用戶是否與活動會話綁定。 但是您無法查詢會話表(缺少查詢所有活動會話)的用戶ID,因為此信息存儲為pickle數據。 即使你這樣做也不完全有意義,具體取決於會話cookie持續多長時間(默認為2周)。

所以,你可以做什么? 您可以查詢有關用戶的一件事是他們最后一次登錄。例如,您可以在不到10分鍾前獲得上次登錄的用戶:

from datetime import datetime, timedelta
from django.contrib.auth.models import User

cutoff = datetime.now() - timedelta(minutes=10)
active = User.objects.filter(last_login__gt=cutoff)

您可以做的另一件事就是自己跟蹤。 事實上,有一個應用程序,它只是做django跟蹤

沒有內置的方法來執行您正在尋找的內容,但是有一個應用程序,您可以插入到您的項目,讓您做你想要的。 它被稱為django-tracking,你可以在這里找到它: https//github.com/codekoala/django-tracking

編輯哎呀! 我被擊敗了,但基本上是Mark Lavin所說的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM