2012-04-20 86 views
0

方案一个会话多个帐户:管理与多个标签打开

我有一个管理应用程序,其管理的其他应用程序的用户帐户。现在,我想在管理应用程序中放置用户特定的链接(例如Click here to login with user1),以便管理员可以直接在单独的浏览器窗口或选项卡(target="_blank")中与用户一起登录。

问题:

当管理员点击两个或两个以上的链接,并打开两个选项卡与TAB1 = user1和TAB2 =用户2中,最后点击选项卡将覆盖所有其他选项卡的会话变量。当然......这就是会话的工作方式,但我想知道是否有办法让管理员在多个选项卡中使用一个会话管理多个用户界面?但我不认为有可能在浏览器中识别特定的标签,这样我可以说,“在TAB1为user1和TAB2是user2的登录...

问题:类似 有没有人做了什么和喜欢分享解决这个基本思想


编辑:

一个可能的解决方案可能是一个参数与用户ID传送到每个页面添加到URL,并把它吧?

回答

4

正如您的编辑指出的那样,要做到这一点的方法是使用url变量来指定用户应该是谁。

这种方法有很多安全问题。

我假设您的初始链接正在进行某种安全检查,以确保用户的初始“登录”是授权请求。你需要为这种方法做类似的事情。如果您的初始请求类似于http://example.com/page.cfm?userid={id}&authtoken={encryptedtoken},我会将该用户标识放入会话作用域中,作为管理员可以模拟的有效用户标识。他们点击的链接越多,他们可以模仿的用户就越多。在随后的请求中,您根据请求的userid对会话中允许的列表进行检查,并允许或拒绝模拟。

您还需要更新网站上的所有链接,以便它们包含用户标识。更简单的方法是欺骗并使用jQuery或其他方法重写所有内部URL,并附上userid。基于上述检查,您将有条件地包含该JavaScript。

最后,您可能想要阻止这些包含userid的网址出现在搜索引擎中,前提是网址不是完全锁定的网站。您需要使用规范的网址来移除userid,或者设置x-robots标头,以通知搜索引擎不要索引已指定userid的网址;或两者。

这是在同一浏览器中为多个用户获取不同“会话”的最原始方法。然而,如果您将会话范围用于任何有意义的事情,则会碰到问题,因为每个选项卡都会尝试覆盖另一个。您需要为每个请求覆盖正常的站点会话变量,否则您需要在会话作用域中为每个使用的用户ID创建不同的结构。这是多少问题取决于您的应用程序。

这是一个可行的事情,但可能还有很多工作,然后你希望。

另一个选项是让管理员使用Google Chrome with multiple profiles并将登录URL复制并粘贴到不同的配置文件窗口中。对他们来说有点不方便,但对你来说工作量要少很多。

+0

而不是多个配置文件,我认为多个隐身标签就足够了。 – ale 2012-04-20 18:27:46

+1

每个配置文件只能有一个隐身“会话”。如果您将配置文件和该配置文件的隐身会话用于两个不同的登录,您可以拥有'登录用户数量/ 2个chrome配置文件。我认为向客户解释这一点比简介本身要困难得多。 – nosilleg 2012-04-20 19:27:47

+0

@nosilleg:我想你的意思是'登录用户数量* 2' – AbdullahC 2012-05-04 14:53:13