2

我编写了一个动态数据库驱动、面向对象的网站,带有管理前端等。我想添加一个功能,客户可以将项目保存为“收藏夹”,而无需创建帐户和登录,稍后再返回,但我不知道该怎么做...我看到三个选项:

  1. 根据 IP 地址记录收藏夹,然后在客户创建帐户时将其更改为记录在帐户中;
  2. 强制客户创建帐户才能使用此功能;
  3. 根据 IP 地址记录收藏夹,但允许用户选择以他们指定的名称保存收藏夹。

选项 1 的问题是我对 IP 地址知之甚少——我爸爸认为它们是独一无二的,但我知道人们在使用这样的系统时遇到过问题。

1 和 2 的问题是帐户尚未向客户开放 - 目前只有管理员可以登录。改变它应该很容易(不超过一个上午或下午的工作),但我也必须实现用户组。

选项 3 的问题是,如果用户 A 保存了一个名为“我的收藏夹”的收藏列表,然后用户 B 尝试以该名称保存一个列表并且被拒绝,则用户 B 将能够访问用户保存的列表A 因为他们现在知道它已经存在。一个解决方案是密码保护列表,但为了完成所有这些工作,我不妨实施选项 2。

当然,我总是可以使用选项 4;如果有人可以提出比上述任何选项更好的解决方案,请使用替代方案。

那么以前有人做过这样的事情吗?如果是这样,你是怎么做的?你推荐(或不推荐)什么?

提前谢谢了,

问候,

理查德

4

1 回答 1

4

使用基于 IP 的解决方案的问题在于 IP 不一定是唯一的。路由器允许多个人使用一个“外部”IP 地址访问互联网 - 这是您的网站将看到的 - 并为每个用户提供一个唯一的“内部”地址 - 您无权访问。路由器用于公司、教育机构、家庭、提供互联网访问的地方,如咖啡馆,应有尽有。因此,基于 IP 的解决方案并不适用于所有人 - 例如,我和我的室友都使用路由器连接到互联网,因此共享一个外部 IP 地址,最终会得到一个双方都可以看到的收藏夹列表。

更好的解决方案是在客户端尝试添加收藏夹时将一些 GUID 保存到客户端计算机上的 cookie 中。然后在您的数据库中,您将收藏夹链接到此 GUID,直到用户在您的系统上创建帐户。但这并非没有问题。如果用户从他们的机器中删除 cookie,他们将失去对他们收藏夹的访问权限。

最好的选择是让他们在系统上创建帐户,一旦登录,他们就可以创建与其帐户相关联的收藏夹。因此,选项 2 将是首选解决方案,尤其是对于需要持续存在直到用户选择删除它的数据。

于 2010-05-20T00:07:07.353 回答