[英]Django auto logout not updating in Database
我正在使用Python(2.7)和Django(1.11)開發一個項目,需要在其中執行幾分鍾或幾小時的不活動狀態自動注銷。
注意:我進行了很多搜索,並研究了一個相關的問題,但找不到針對我特定問題的任何解決方案,請不要將其標記為重復項!
我通過在settings.py
添加一些設置來實現此目的:
SESSION_COOKIE_AGE = 120
SESSION_SAVE_EVERY_REQUEST = True
LOGOUT_REDIRECT_URL = 'mainlogin'
僅出於測試目的,我將其設置為2分鍾。 2分鍾后,當我刷新頁面時,用戶將注銷並重定向到登錄頁面,但是在后端/數據庫中,用戶的狀態仍active
。
我需要使用活動用戶進行進一步的處理/執行,因此,如果自動注銷的用戶不應該是活動用戶,則應該是活動用戶。
如果我手動注銷該用戶,它將不再顯示在活動用戶中,這意味着手動注銷運行良好,但是自動注銷仍將用戶顯示為active
用戶。
這是我如何獲得活躍用戶的方法:
all_active_users = user_table.objects.filter(user_type='a', status=1, approval_status=1, is_active=True)
# further execution
更新:我正在使用名為
user_table
用戶的自定義模式,這是我根據答案的建議嘗試的方法:
def get_all_logged_in_users():
# Query all non-expired sessions
# use timezone.now() instead of datetime.now() in latest versions of Django
sessions = Session.objects.filter(expire_date__gte=timezone.now())
uid_list = []
# Build a list of user ids from that query
for session in sessions:
data = session.get_decoded()
uid_list.append(data.get('id', None))
# Query all logged in users based on id list
return user_table.objects.filter(id__in=uid_list)
它返回空查詢集為: active drivers are: <QuerySet []>
甚至driver
類型的用戶也已登錄。
如何解決此問題,所以當用戶自動注銷時,它將不會顯示在active
用戶中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.