Cla*_*Boy 3 .net vb.net asp.net favorites ip-address
我编写了一个动态数据库驱动、面向对象的网站,带有管理前端等。我想添加一个功能,客户可以将项目保存为“收藏夹”,而无需创建帐户和登录,以便稍后返回它们,但我不知道到底该怎么做......我看到三个选项:
选项 1 的问题是我对 IP 地址了解不多 - 我爸爸认为它们是独一无二的,但我知道人们在使用此类系统时遇到过问题。
1和2的问题是账户还没有向客户开放——目前只有管理员可以登录。改变它应该很容易(不超过上午或下午的工作),但我也必须实现用户组。
选项 3 的问题是,如果用户 A 保存了一个名为“我的收藏夹”的收藏夹列表,然后用户 B 尝试以该名称保存列表但遭到拒绝,则用户 B 将能够访问用户保存的列表A 因为他们现在知道它已经存在。解决此问题的一个解决方案是使用密码保护列表,但要付出所有这些努力,我也可以实施选项 2。
当然我总是可以使用选项 4;如果有人可以提出比上述任何选项更好的解决方案,请使用替代方案。
那么以前有人做过这样的事情吗?如果是这样,你是怎么做的?您推荐(或不推荐)什么?
使用基于 IP 的解决方案的问题是 IP 不一定是唯一的。路由器允许多个人使用一个“外部”IP 地址(您的网站将看到该地址)访问互联网,并为每个用户提供一个唯一的“内部”地址(您无权访问该地址)。路由器用于公司、教育机构、家庭、提供互联网接入的场所(如咖啡馆)等等。因此,基于 IP 的解决方案并不适合所有人 - 例如,我和我的室友都使用路由器连接到互联网,从而共享一个外部 IP 地址,最终会得到一个双方都可以看到的收藏夹列表。
更好的解决方案是当客户端尝试添加收藏夹时,将一些 GUID 保存到客户端计算机上的 cookie 中。然后在您的数据库中将收藏夹链接到此 GUID,直到用户在您的系统上创建帐户。但这并非没有问题。如果用户从他们的机器上删除cookie,他们将无法访问他们的收藏夹。
最好的选择是让他们在系统上创建帐户,登录后,他们可以创建与其帐户关联的收藏夹。因此,选项 2 将是首选解决方案,特别是对于需要保留到用户选择删除为止的数据。