如何最好地实现“收藏夹”功能? (比如数据驱动网站上最喜欢的产品)

时间:2010-05-19 23:53:09

标签: .net asp.net vb.net ip-address favorites

我已经编写了一个动态的数据库驱动,面向对象的网站,带有管理前端等等。我想添加一个功能,客户可以将项目保存为“收藏夹”,而无需创建帐户和登录,返回对他们来说,但我不知道如何做到这一点......我看到三个选择:

  1. 根据IP地址记录收藏夹,然后根据客户创建帐户更改这些收件人以记录帐户;
  2. 强制客户创建帐户以便能够使用此功能;
  3. 根据IP地址记录收藏夹,但允许用户选择以他们指定的名称保存收藏夹。
  4. 选项1的问题是我对IP地址了解不多 - 我的爸爸认为它们是独一无二的,但我知道人们对这样的系统有问题。

    1和2的问题是帐户还没有向客户开放 - 只有管理员才能登录。应该很容易改变这一点(不过早上或下午工作)但我也必须实现用户组。

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

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

    所以有人曾经做过这样的事吗?如果是这样你是怎么做的?你推荐什么(或不推荐)?

    非常感谢,

    此致

    理查德

1 个答案:

答案 0 :(得分:4)

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

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

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