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

qxsslcnc  于 2023-02-20  发布在  .NET
关注(0)|答案(1)|浏览(213)

我已经写了一个动态数据库驱动,面向对象的网站与管理前端等我想添加一个功能,客户可以保存为“收藏夹”的项目,而不必创建一个帐户和登录,以后再回到他们,但我不知道如何确切地去做这件事...我看到三个选项:
1.根据IP地址记录收藏夹,然后将其更改为针对帐户记录(如果客户随后创建帐户);
1.强制客户创建帐户才能使用此功能;
1.根据IP地址记录收藏夹,但给予用户选择以指定的名称保存收藏夹。
选项1的问题是我对IP地址了解不多--我爸爸认为它们是唯一的,但我知道人们在使用这样的系统时遇到过问题。
1和2的问题是账户还没有向客户开放--目前只有管理员可以登录。改变这一点应该很容易(不超过一个上午或下午的工作),但我还必须实现用户组。
选项3的问题是,如果用户A保存了一个名为“我的收藏夹”的收藏夹列表,然后用户B试图在这个名称下保存列表,但被拒绝,用户B将能够访问用户A保存的列表,因为他们现在知道它已经存在。一个解决方案是密码保护列表,但要进行所有这些努力,我还不如实现选项2。
当然,我总是可以使用选项4;如果有人能提出比上述任一选项更好的解决方案,请使用替代方案。
那么以前有没有人做过这样的事情?如果有,你是怎么做的?你推荐(或不推荐)什么?

pieyvz9o

pieyvz9o1#

使用基于IP的解决方案的问题是IP不一定是唯一的。路由器允许多个人使用一个“外部”IP地址访问互联网-这是你的网站将看到的-并为每个用户提供一个唯一的“内部”地址-你没有访问权限。路由器用于公司,教育机构,家庭,提供互联网接入的地方,如咖啡馆,因此,基于IP的解决方案并不适用于每个人-例如,我和我的室友都使用路由器连接到互联网,因此共享一个外部IP地址,最终会有一个双方都能看到的收藏列表。
一个更好的解决方案是当客户端尝试添加收藏夹时,将一些GUID保存到客户端机器上的cookie中。然后在您的数据库中将收藏夹链接到该GUID,直到用户在您的系统上创建帐户。但这并非没有问题;如果用户从他们的机器中删除cookie,他们将失去对其收藏夹的访问。
最好的选择是让他们在系统上创建帐户,一旦登录,他们就可以创建与他们的帐户相关联的收藏夹。因此,选项2将是首选解决方案,特别是对于需要持续存在直到用户选择删除它的数据。

相关问题