簡體   English   中英

沒有用戶登錄時存儲購物車(playframework疑問)

[英]storing a shopping cart when no user is logged in(playframework doubt)

我正在瀏覽有關Play! framework帖子Play! framework Play! framework並發現了一些討論ecommerce帖子。由於我是兩者的初學者,我想做一個練習。我寫了一些用例和一些要求如下。我想聽聽你的意見,希望它可能拓寬我的技術智慧。

網頁上購物車的一些要求:

1.即使沒有登錄網站,用戶也可以將商品添加到購物車。

2.用戶點擊checkout link后需要登錄。

3.Itemdetails頁面僅在該項目尚未包含在購物車中時才會包含addtocart按鈕。

4.Itemdetails頁面將包含一個minicartview ,顯示購物車中的商品名稱和總價格。

我將ShoppingCart編碼如下。它可以使用它的User從數據庫中檢索。

@Entity
class ShoppingCart{
...
   @OneToOne
   public User user;
}

我考慮過的一些可能情況。

1.當他進入Itemdetails頁面時,用戶已經登錄。

這看起來很簡單,我可以使用登錄用戶從db檢索購物車。

User user = User.find("byEmail", Security.connected()).first();
cart = ShoppingCart.find("byUser",user);
...

2.目前沒有用戶登錄。

這是困擾我的。如何處理這個?如何在Itemdetails頁面上顯示minicartview ?我應該在哪里存放購物車?緩存是易變的,不可信任。我應該如何存儲購物車?我無法存儲在db中直到用戶登錄

如果有人能夠清楚地了解這種情況,它可能對我有很大幫助..

您為此建模的方式,用戶只能有一個購物車。 您應該為每個會話創建一個購物車。 使用會話ID作為購物車實體的主鍵,不與User關聯。

另見: 使用playframework實現購物車的建議

你有幾個選擇。 你可以

  1. 將購物車項目存儲在會話中(因為它是一個cookie,嘗試限制您存儲的數量)。 當用戶登錄時,您可以將會話購物車項目與其登錄的用戶項目合並。 與亞馬遜等網站一樣,嘗試在用戶的計算機上存儲長期會話以記住登錄用戶的ID以供以后使用是有意義的。

  2. 將數據存儲在數據庫中,以防止臨時用戶名。 這會像會話一樣,但是如果沒有轉換為完整用戶,則必須有一個常規作業來清除臨時用戶數據庫表。

就個人而言,我會選擇選項1.實現相當簡單,cookie中沒有任何個人信息(因為它只是ID),它意味着短期存儲。

暫無
暫無

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

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