簡體   English   中英

如何使用Flask跟蹤匿名用戶

[英]How to track anonymous users with Flask

我的應用程序實現了一個購物車,匿名用戶可以在其中填充產品。 用戶登錄僅在付款前需要。 如何實施?

主要的挑戰是燒瓶必須跟蹤用戶(即使是匿名的)和他們的訂單。 我目前的方法是利用分配給current_userAnonymousUserMixin對象。 假設current_user在整個會話期間不會改變。 但是,我注意到一個新的AnonymousUserMixin對象被分配給current_user ,例如,每次刷新瀏覽器頁面時。 請注意,如果用戶通過身份驗證,則不會發生這種情況。

關於如何繞過這個的任何建議?

無需自定義AnonymousUserMixin ,您可以將購物車數據保存在會話中:

  • 匿名用戶向hist cart添加內容 - >使用購物車數據更新其會話
  • 用戶想要簽出 - >將他重定向到登錄頁面
  • 登錄用戶返回結賬 - >將他的購物車數據從會話中取出並做他在整個時間登錄時你會做的事情

如果您願意,可以使用AnonymousUserMixin子類,但需要為其添加一些邏輯,以便您可以將每個匿名用戶與存儲在數據庫中的購物車相關聯。

這是你可以做的:

  1. 當新用戶連接到您的應用程序時,您將分配隨機生成的唯一ID。 您可以將此隨機ID寫入用戶會話(如果您希望在用戶關閉瀏覽器窗口時刪除購物車)或長期cookie(如果您希望即使在關閉瀏覽器后也能記住購物車)。 您可以使用Flask-Login實際管理會話/ cookie,您不必將未知用戶視為匿名用戶,只要為其分配ID,就可以將其視為登錄用戶。

  2. 您如何知道匿名用戶是已知還是新用戶? 當用戶連接時,檢查會話或cookie是否存在,並在那里查找id。 如果找到了ID,則可以為用戶找到購物車。 如果使用AnonymousUserMixin的子類,則可以將id添加為成員變量,這樣即使對於匿名用戶也可以執行current_user.id 您可以在Flask-Login用戶加載器回調中使用此邏輯。

  3. 當用戶准備付款時,您將匿名用戶轉換為注冊用戶,保留id。

  4. 如果您有一個cron作業,通常會從數據庫中清除舊的/放棄的匿名購物車,您可能會發現一個舊的匿名用戶連接並提供了一個在數據庫中沒有購物車的用戶ID(因為購物車被認為是陳舊的,刪除)。 您可以通過為相同的ID創建一個全新的購物車來處理此問題,甚至可以通知用戶購物車的內容已過期並已刪除。

希望這可以幫助!

暫無
暫無

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

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