2012-04-20 109 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