将用户购物车保存在sessionState中以使其持久使用asp.net是否专业

本文关键字:asp net 是否 存在 保存 购物车 sessionState 用户 | 更新日期: 2023-09-27 17:58:42

我想为MVC应用程序制作一个持久的购物车,换句话说,如果用户在登录时将一些产品添加到他的/她的购物车中,然后离开应用程序,而没有下订单或从他的/她的车中删除项目。我想让用户将他们添加的商品放在他们的购物车中,直到某个特定的时间,比如一个月,手动从他/她的购物车中订购或删除商品。将他们的购物车保存在asp.net会话状态中是个好主意吗?如果是,在哪种模式下,State Server、InProc、Out of Process或SQLServer?问候

将用户购物车保存在sessionState中以使其持久使用asp.net是否专业

会话状态只在用户与您的站点交互时持续。从技术上讲,时间稍长,但一旦用户导航离开或关闭浏览器,您就应该认为会话已关闭。

选项A:使用用户计算机上的cookie将商品存储在其购物清单中。存储尽可能少的信息,也许只是产品SKU和数量。

例如:创建cookie

HttpCookie cartCookie = new HttpCookie("TheCart");
DateTime now = DateTime.Now;
// Possibly a serialised string of the shopping cart object (ensure no sensitive info though)
cartCookie.Value = shoppingCartData;
// Set when the cookie should expire. 
cartCookie.Expires = now.AddMonths(1);
// Add the cookie too the response
Response.Cookies.Add(cartCookie);

阅读Cookie:

HttpCookie cartCookie = new HttpCookie("TheCart");
cartCookie = Request.Cookies["TheCart"];

选项B:如果您的用户已登录,则将cart状态保存在数据存储中,例如关系型、磁盘或NoSQL数据库中。

我不会那样做的。让我们来谈谈一个场景:

您使用User1登录并在购物车中添加产品,然后注销。

令人惊讶的是,当您使用User2登录时,您会看到由User1创建的相同产品和相同的购物车。

因为会话cookie系统使用基于浏览器的逻辑。所以,只要您使用相同的浏览器,除非cookie被删除,否则即使您切换用户,购物车也会保留。