【问题标题】:Guest session in shop online, cart in NodeJS/AngularJS在线商店的访客会话,NodeJS/AngularJS 中的购物车
【发布时间】:2017-12-22 10:31:50
【问题描述】:

如何在我的网站上为客人创建会话,以便他们在访问后可以在其上购物,并将整个购物车保存到会话中?

目前我将 Node.js 与 Passport 和 AngularJS 一起使用。

【问题讨论】:

  • Jabloñski,我编辑了这个问题,以使其更易于阅读和理解

标签: angularjs node.js passport.js


【解决方案1】:

我想一种策略可以是:

  • 如果您是访客,请将会话数据存储在 localStorage 或 cookie 中。
  • 当用户登录时,它会清除 localStorage 中的会话(最终将其替换为数据库中的一些会话数据)
  • 最终,当客人注册时,您可以将客人会话数据传输给新用户。

这很简单,只影响您的前端部分(除了第三方,但不是必须的),但是每次有人登录时访客会话都会丢失,而且您对什么内容没有太多控制权在会话数据中(最好不要有任何敏感内容)。

另一个更复杂的可能是:

  • 在您的后台创建会话存储,仅用于访客会话数据。
  • 在 cookie 中存储访客会话 ID。
  • 当有访客会话 ID 时,您可以从访客会话存储中检索一些数据。
  • 如果有人登录,只需忽略 cookie 中的访客会话 ID。

这解决了登录=会话丢失的问题,但后端部分有一些严重的工作。

最后,代替后端访客会话存储和 ID 系统,您可以简单地将所有数据存储在“访客 cookie”中并忽略它,这取决于您希望对会话数据进行多少控制。

【讨论】:

  • 好的,我要来宾会议怎么办??你能告诉我吗?:)
  • 我想就像你对登录用户所做的那样。跟踪用户是否登录,如果没有,跟踪数据。对于登录用户,您将会话保存在 RAM 或 Redis 存储中。 Passport 与中间件一起工作,即每次你发出一个 http 请求时,它将被用来查看是否有一个用户发出了请求。为此,它使用 cookie (connect.sid) 进行检查。如果您希望客户数据在服务器缓存中,您可以创建自己的中间件,或者直接将其放入 localStorage。如果用户使用同一台计算机和浏览器,数据将保留在那里。
猜你喜欢
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
相关资源
最近更新 更多