使用许多选项卡控制cookie

时间:2013-06-06 17:28:52

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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