【问题标题】:Managing multiple accounts in one session with multiple tabs open在一个会话中管理多个帐户并打开多个选项卡
【发布时间】:2012-05-01 23:01:05
【问题描述】:

场景:

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

问题:

当管理员单击两个或多个链接并打开两个 tab1=user1 和 tab2=user2 的选项卡时,最后单击的选项卡会覆盖所有其他选项卡的会话变量。当然......这就是会话的工作方式,但我想知道是否有一种方法可以让管理员在多个选项卡中通过一个会话管理多个用户界面?但是我看不到在浏览器中识别特定选项卡的可能性,因此我可以说“在 tab1 中是 user1 而在 tab2 中是 user2 登录...

问题: 有没有人做过类似的事情并喜欢分享解决这个问题的基本思路?


编辑:

一种可能的解决方案是向带有用户 ID 的 URL 添加一个参数并将其传递给每个页面,对吗?

【问题讨论】:

    标签: coldfusion session-variables multi-user browser-tab


    【解决方案1】:

    正如您的编辑所指出的,执行此操作的方法是使用 url 变量来指定用户应该是谁。

    这种方法存在许多安全问题。

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

    您还需要更新网站上的所有链接,以便它们包含用户 ID。更简单的方法是欺骗并使用 jQuery 或类似方法重写所有内部 url,并附加 userid。您将根据上述检查有条件地包含该 javascript。

    最后,如果不是完全锁定的网站,您可能希望阻止这些包含 userid 的网址出现在搜索引擎中。您要么需要使用规范 url 来删除 userid,要么设置 x-robots 标头以告诉搜索引擎不要索引已指定 userid 的 url;或两者兼而有之。

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

    这是一件可行的事情,但可能比你希望的要多得多。

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

    【讨论】:

    • 比起多个配置文件,我认为多个隐身标签就足够了。
    • 每个配置文件只能有一个隐身“会话”。如果您将配置文件和该配置文件的隐身会话用于两个不同的登录,您可能拥有number of logged in users/2 chrome 配置文件。我认为向客户解释这一点比仅仅介绍自己要困难得多。
    • @nosilleg:我猜你的意思是number of logged in users*2
    • @Hippo 我的意思是从网站的角度来看是number of website logged in users/2 = number of chrome profiles,但是是的,它也可以计算为number of chrome profiles * 2 = number of website logged in users
    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2023-03-14
    • 2016-04-07
    • 1970-01-01
    • 2018-07-05
    • 2012-08-23
    相关资源
    最近更新 更多