[英]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關聯。
你有幾個選擇。 你可以
將購物車項目存儲在會話中(因為它是一個cookie,嘗試限制您存儲的數量)。 當用戶登錄時,您可以將會話購物車項目與其登錄的用戶項目合並。 與亞馬遜等網站一樣,嘗試在用戶的計算機上存儲長期會話以記住登錄用戶的ID以供以后使用是有意義的。
將數據存儲在數據庫中,以防止臨時用戶名。 這會像會話一樣,但是如果沒有轉換為完整用戶,則必須有一個常規作業來清除臨時用戶數據庫表。
就個人而言,我會選擇選項1.實現相當簡單,cookie中沒有任何個人信息(因為它只是ID),它意味着短期存儲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.