我认为,在几乎所有情况下,用户偏好数据都可以存储在 cookie 中,其结果(几乎)与使用用户配置文件 API 时的结果相同。使用 cookie(对于经过身份验证的用户)的缺点似乎是 cookie 可能会被删除或超时,在这种情况下,用户偏好数据将会丢失。对于匿名用户,如果需要跨会话保留首选项数据,则即使使用用户配置文件,也必须使用 cookie。

那么使用用户配置文件或 cookie 来存储用户首选项的最大优点/缺点是什么?

有帮助吗?

解决方案

要保持在cookies中的所有偏好数据的另一缺点是所有这些数据将在从客户端和在从每当改变到数据由与服务器的任何响应每个请求被发送。虽然这可能看起来像在宽带时代一个小点它仍然是一个额外的开销。使用配置文件API meands该数据在服务器处保持并只需要由浏览器发送一个会话标识cookie中。

此外,如你所说,对于匿名用户如果删除Cookie,然后在情景DB举行的用户偏好将无法再访问。然而,这不会与注册用户网站的情况。如果他们消除他们的cookies服务器仍然能够找回他们的用户偏好,他们在下次登录的时间。

其他提示

在网站上注册的好处之一是它会记住我的偏好 - 如果您将该信息存储在我的计算机上的 cookie 中而不是您的服务器上,那么当我从另一台计算机登录到您的网站时,我必须再次设置我的所有首选项 - 从可用性的角度来看,这相当糟糕。

对于匿名用户来说,将首选项存储在 cookie 中似乎相当明智 - 您不知道他们是谁,也不知道他们是否会回来,而且正如您所说,您无法从一个会话到下一个会话确定他们是谁是 - 但是您最好在 cookie 中存储某种令牌并将其映射到服务器上的首选项存储。

另外,我注意到不同的浏览器对 cookie 有不同的实现 - 例如 IE 现在可以 收到 50 个 cookie 来自一个域(从原来的 20 个),但仍然限于总数 整个 cookie 集合为 4096 字节 (和之前的)- 其他浏览器将支持每个 cookie 4KB,而不是每个域。

饼干很有限的最大的长度和他们所使用的一个实超出了你的控制(毕竟,他们是一个特点的访问者浏览器)。就个人而言,我不喜欢依赖于未知的第三方实现我没有任何控制了如果我有,我试图使用它以最简单的方式可能的。

所以从我从哪里来的,我会总是存储用户的数据在服务器上,只是通过围绕一个cookie指向这一信息。

除了不信任的浏览器与一个潜在的大块的数据(这可能是丢失的,不正确的储存或不存在所有这取决于不仅浏览器,但也说,一些防毒软件应用程序或任何),这有其他各种优点:

  • 你是隐藏你的实施从用户:如果存储数据的饼干,它可见于任何人,可以进行分析或修改。这甚至可能导致用户改变的饼干,有的喜好,从而迫使你成为保持周围的东西你可能想要摆脱只是因为某些用户都取决于你的特别是实施在任何时间。
  • 饼干都存储在纯文本,在公共机,大家可以不再很容易地查看所有设置以前的用户作出,也不能改变他们的意愿。

但最重要的一点保持不断接从不工作的浏览器的实现(只有储存的小标记的共同的、经过测试的使用情况)

不要忘记,使用Cookie的最大缺点之一是,它们可以被复制,所以对他们的危险存储认证信息。

我不熟悉的用户配置文件API,但我猜它存储在服务器上的信息(?)。如果多数民众赞成的话,那么如果你有很多用户,你可以有问题。

总体也许是最好的解决方案是使用用户简档,如果它保证了信息的持久性。

请其可以写在一个cookie仍然存在用户数据的ProfileProvider,所以你可以有两全其美的,如果你确定你要坚持国家是适当的饼干(大小,安全等)

其实,你不使用ASP.NET配置文件提供当需要在饼干匿名用户坚持偏好数据。只要存储当前的用户名(这是一些可怕的寻找会话相关的字符串)在cookie中。这将成为以后访问以前的用户名,然后你可以抓住旧档案信息,并将其迁移到当前档案,甚至验证他们的身份为老匿名资料。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top