【问题标题】:Controlling cookies with many tabs使用多个选项卡控制 cookie
【发布时间】:2013-06-07 04:41:22
【问题描述】:

我有一个特殊的问题。我的应用程序具有不同级别的身份验证,并且一个特定级别(超级用户)需要能够将应用程序用作具有较低权限的另一个用户(子用户)。

我们确定,当 sup 用户选择子用户时,会在浏览器中打开另一个选项卡,并加载子用户权限和他各自的 cookie。 我们遇到的问题是:我们如何在这个新选项卡中获取新 cookie 的引用?

另外 sup 用户可以打开这么多标签,每个标签都需要引用自己的 cookie。

【问题讨论】:

  • 还有其他方法可以进行此控制或类似的操作吗?
  • 我认为您的 sup 用户应该被设置为允许查看子用户的数据而不查看 cookie。这意味着,当您以 sup 身份登录时,sup 身份验证 cookie 适用于任何子。

标签: c# asp.net-mvc-4 session-cookies


【解决方案1】:

我认为您的 sup 用户应该被设置为允许查看子用户的数据而不查看 cookie。这意味着,当您以 sup 身份登录时,sup 身份验证 cookie 适用于任何子。这对你有意义吗?

当您尝试检索 sub 的数据时,请询问 sub 的凭据/cookie 或检查是否有 sup 的 cookie。如果有 sup 的 cookie 或用户提供了 sup 的凭据,那么您就可以开始了。

【讨论】:

  • 在这种情况下,我怎么知道哪个子用户正在对系统进行更改?我该如何控制?
  • 您会知道,因为您将拥有正在更改的帐户的 ID。
  • 明白了,但我现在的问题是如何在超级用户可以访问的页面中保留这个ID,记住他可以打开很多标签。有什么想法吗?
  • 网址可能是您最好的选择。然后你可以在每个窗口中有不同的。除此之外,您可以使用帐户 ID 向服务器进行回发,并通过该方式携带数据。
  • 谢谢你的帮助,我会照着做的。
【解决方案2】:

遗憾的是,没有办法以这种方式直接限制 cookie 的范围。但是,解决您的问题的一种方法是为您的网站创建一个镜像 URL,并将 cookie 的路径限制为镜像;例如,将普通 cookie 的路径限制为 www.example.com,但创建一个镜像 URL mirror.example.com(使用符号链接或其他功能在内部指向 www.example.com)。但是,这不仅是您想做的大量工作,而且仅限于允许主用户和一个备用用户。

另一种不依赖于 cookie 的解决方案是创建一个 GET 变量,当附加到您网站上的 URL 时,会导致具有足够特权的用户冒充另一个用户(例如 &altUser=subUser)。然后,为了使这个在选项卡中持久化,自动将相同的变量附加到使用它生成的页面上的每个链接的末尾。

【讨论】:

  • 感谢您的回答!正如你所说,我已经尝试了第二种解决方案,但是很难在整个应用程序中保留 url 参数。
  • 应该没那么难。您的路线应该需要帐户的 ID,如下所示:/Account/Edit/89 然后页面上的每个链接也应该有 ID,/Account/AddAddress/89 或 /Account/RemoveCreditCard/89
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多