【问题标题】:Cookies for different user in one browser在一个浏览器中为不同用户设置 Cookie
【发布时间】:2015-03-30 22:31:38
【问题描述】:

网站页面上有一些下拉菜单(用户只有通过身份验证才能访问此页面)我想将此值保存到 cookie 并在用户返回时将其设置回下拉菜单我的网站。

将当前选择的下拉选项值保存到 cookie 并稍后检索它不是问题。但是如果我让另一个用户在同一个浏览器上登录,我会遇到一些问题。它从 cookie 中获取先前用户保存的值。

那么有什么好方法可以将来自同一浏览器的不同用户的 cookie 分开呢?我正在考虑创建名称类似于“用户名下拉菜单”的 cookie,但我怀疑这是最好的解决方案。

我在 Tomcat 8 中使用 Java。

【问题讨论】:

  • 您需要它作为 cookie 吗?例如,您需要将其发送到服务器,还是只需要客户端的信息?
  • 我不明白?所以你的意思是,如果不同的用户,使用相同的计算机和浏览器,应该设置另一个 cookie?如果是这样,那不是您通常应该担心的事情吗?
  • @adeneo:我认为这个想法是不同的用户他的应用程序,而不是计算机。许多家庭只有一个操作系统登录,他们都共享...
  • @T.J.Crowder - 但他声称它从前一个用户保存的 cookie 中获取值,这不会只发生在同一台计算机上的同一浏览器中吗?
  • @adeneo:是的。因此,假设家庭计算机使用共享登录。 Joe 在 Chrome 中使用 Vitalii 的应用程序并通过应用程序登录进行登录,执行一些操作,然后退出。后来,玛丽使用 Chrome 登录到 Vitalii 的应用程序。她似乎是乔的小甜饼,因为就浏览器和操作系统等而言,乔和玛丽是同一个人。但是 Vitalii 的应用可以区分它们(因为它有自己的登录)。

标签: javascript tomcat cookies browser


【解决方案1】:

我将在这里猜测您不需要在每个 HTTP 请求中都需要将此信息发送到您的服务器;您只需要在客户端存储信息(并且您可以根据需要通过 ajax 将其发送到服务器)。

如果是这样,我会使用本地存储,而不是 cookie。当然,使用用户名或用户 ID 等是合理的:

// Setting:
localStorage.setItem(username + "-dropdown", value);

// Getting:
var value = localstorage.getItem(username + "-dropdown");

或者你可以使用括号表示法:

// Setting:
localStorage[username + "-dropdown"] = value;

// Getting:
var value = localstorage[username + "-dropdown"];

几乎不使用括号符号的唯一原因是,如果您需要在旧版浏览器上填充本地存储(有些填充可以为您使用 cookie),但本地存储是 supported on all modern browsers,还有 IE8,所以这些浏览器目前确实非常过时了。

【讨论】:

    猜你喜欢
    • 2014-08-10
    • 2013-08-07
    • 2014-05-07
    • 1970-01-01
    • 2012-09-06
    • 2018-10-26
    • 2011-08-16
    • 2020-06-06
    相关资源
    最近更新 更多