【问题标题】:Cart lifecycle with cookie带有 cookie 的购物车生命周期
【发布时间】:2016-10-20 21:40:20
【问题描述】:

我有一个使用 Session 的购物车实现,并希望迁移到基于 cookie 的购物车。此外,实际上我将完整的购物车存储在会话中,并希望迁移到只有购物车 ID 在 cookie 中而内容在数据库中的版本。

我已经阅读了很多关于 SO 的博客文章甚至问题,但在某些方面仍然有些困惑:

  • cookie 生命周期如何?实际上,当新会话开始时,我会创建一个新购物车。然后我根据客户操作管理会话(添加到购物车、从购物车中删除、结帐时清除)
  • 如何创建唯一的 cookieId
  • 哪种方式是处理备份到数据库任务的最佳方式?使用 jQuery 还是更好地处理服务器端的一切?

例如,我在 c# 中使用 asp net mvc。

【问题讨论】:

    标签: asp.net-mvc cookies shopping-cart


    【解决方案1】:

    我使用 Session 来保存整个购物车。后来,我只将购物车 ID 存储在 cookie 中,并将实际商品存储在数据库中。

    在我的场景中,我首先将商品暂时存储在购物车中。结帐成功后,我将购物车中的商品移动到 OrderOrderItem 表中,然后删除购物车。

    这是您可以从我的错误中学到的东西。

    cookie 的生命周期如何?实际上,我创建一个新的购物车时 会话开始。然后我根据客户操作管理会话 (添加到购物车,从购物车中删除,结帐时清除)

    不要在新会话开始时创建 cookie。相反,您只想在客户将商品添加到购物车后在数据库中创建一个条目。然后将该 GUID 存储在 cookie 中。

    主要原因是如果你过早地创建cookie,你最终会得到太多废弃的购物车。

    仅供参考:您想安排一项任务,在特定时间范围后清理废弃的购物车。

    如何创建唯一的 cookieId

    使数据库列 ID 唯一标识符。创建新的购物车后,将返回的 GUID 保存在 cookie 中。

    处理备份到数据库任务的最佳方式是什么?使用 jQuery 还是更好地处理服务器端的一切?

    您想像上面一样从服务器端生成 GUID。

    不要将整数与标识增量一起使用。它最终会带来很大的安全漏洞,因为您可以轻松预测数字。

    【讨论】:

    • 感谢您分享您的经验。你处理匿名购物车吗?那是为尚未登录的用户提供的购物车?
    • 我在 GUID 旁边创建 UserId(allow null) 主键列。如果匿名用户将商品添加到购物车,我将 UserId 留空。他们登录后,我返回并使用用户 ID 填充 UserId
    猜你喜欢
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    相关资源
    最近更新 更多