有沒有一種快速而簡單的方法來獲取當前登錄到web2py應用程序的所有用戶? 我想顯示該頁面的管理員目前有多少非管理員用戶登錄。 謝謝..獲取所有登錄用戶Web2py
2
A
回答
9
請注意,「當前登錄」不是一個明確的概念。您可以登錄,但隨後離開計算機或關閉瀏覽器。在這種情況下,你還在登錄嗎?你可能不應該被算作登錄,但服務器不知道你走開了或關閉了瀏覽器。 Auth系統確實在auth_events表中記錄了登錄和註銷事件,因此一種選擇是查找在定義的時間段內登錄但未顯式註銷的所有用戶。請注意,這可能會誇大登錄用戶的數量,因爲有些用戶可能已經離開您的網站而未顯式註銷。以下是一些代碼:
import datetime
limit = request.now - datetime.timedelta(minutes=30)
query = db.auth_event.time_stamp > limit
query &= db.auth_event.description.contains('Logged-')
events = db(query).select(db.auth_event.user_id, db.auth_event.description,
orderby=db.auth_event.user_id|db.auth_event.time_stamp)
users = []
for i in range(len(events)):
last_event = ((i == len(events) - 1) or
events[i+1].user_id != events[i].user_id)
if last_event and 'Logged-in' in events[i].description:
users.append(events[i].user_id)
logged_in_users = db(db.auth_user.id.belongs(users)).select()
以上提供了所有在過去30分鐘內登錄但未明確登出的用戶。
更復雜的方法將涉及跟蹤已登錄的用戶的請求,以確定誰正在主動使用該應用程序。您可以緩存存儲每個登錄用戶最近請求的時間戳的字典。當請求報告時,在最近的時間範圍內向用戶顯示時間戳(並用較舊的時間戳清除用戶以防止緩存變得太大)。
另一種選擇是檢查會話文件。確定在某個時間段內已被修改的會話。其中,找到包含「auth」對象的對象,並檢查auth.last_visit上次請求的時間(實際上,auth.last_visit只會在上次訪問超過auth.settings的1/10時更新。吸氣時間,默認爲3600秒)。
相關問題
- 1. 獲取所有登錄用戶Drupal
- 2. Zend - 獲取所有登錄用戶
- 3. 獲取不是登錄用戶的朋友的所有用戶
- 4. 如何獲取所有登錄用戶的列表使用
- 5. Java獲取登錄用戶
- 6. 獲取登錄用戶名
- 7. 獲取登錄用戶
- 8. 獲取用戶登錄TWITTER
- 9. 獲取登錄用戶的所有信息? PHP
- 10. asp.net身份獲取登錄用戶的所有角色
- 11. 如何獲取Liferay中的所有登錄用戶列表?
- 12. 如何在wordpress站點中獲取所有登錄用戶ID
- 13. facebook如何獲取登錄用戶的所有照片?
- 14. 獲取登錄用戶的所有權限,EPiServer
- 15. 如何隱藏用戶在web2py中登錄時的登錄?
- 16. CloudKit獲取所有用戶記錄
- 17. Google API獲取所有登錄賬號
- 18. Janrain Facebook登錄web2py
- 19. web2py登錄時創建帳戶
- 20. 如何獲取登錄用戶不是MySQL中的所有用戶?
- 21. Ion Auth,獲取當前登錄的所有用戶的日誌記錄
- 22. 獲取用戶登錄時所用的Django社會AUTH
- 23. 用Java登錄Facebook獲取用戶accessToken
- 24. 獲取用於驗證用戶登錄
- 25. 如何爲所有用戶的登錄
- 26. android facebook登錄所有用戶
- 27. 獲取所需的用戶Windows登錄憑據
- 28. ASP.NET |表單身份驗證|獲取所有登錄用戶(所有用戶的列表或計數)
- 29. 如何獲取Jenkins登錄用戶
- 30. 獲取登錄用戶的日曆Id
嘿安東尼非常感謝你的回答,這真的很詳盡,完整。我肯定會嘗試,並與結果更新.. –
是的,這做了伎倆..真棒安東尼感謝.. –