2012-03-15 63 views
0

比方說,用戶A登錄在和一個sessionScope變量,設置(這只是一個例子):獲取所有sessionScope變量XPages中

sessionScope.put("ABC", "ABC"); 

現在,用戶B登錄時,他的sessionScope變量,設置:

sessionScope.put("XYZ", "XYZ"); 

有沒有一種方法可以讓所有這些sessionnScope變量/對象屬於不同的用戶?

回答

1

會話範圍屬於單一用戶,所以你不能找回它們開箱。您可以將日誌記錄添加到xpage/business日誌中,以便跟蹤正在發生的事情。另一種方法是以用戶身份登錄您希望現在使用調試欄的用戶,並使用調試欄進行調查

3

理論上,您可以註冊一個sessionListener,它在applicationScope中存儲一個指向每個創建的sessionScope的指針...但在我看來,這是一個非常糟糕的主意。您必須非常小心,避免將用戶的會話數據暴露給對方。

+0

如何在不能修改web.xml的情況下添加sessionListener? – 2012-03-18 20:38:41

+0

將其註冊到faces-config.xml中。 XSP Starter Kit包含一個參考實現:http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=XSP%20Starter%20Kit – 2012-03-18 20:55:37

+0

如何將這添加到faces-config.xml ? A < listener > - 語句將被忽略? – 2012-03-18 21:30:42

0

SessionScope變量屬於瀏覽器/客戶端的單個實例。如果您是匿名用戶,並以「用戶一」身份登錄,則您擁有與以前相同的sessionScope。如果您註銷並重新登錄爲「使用兩個」,情況也是如此。

我已經構建了一個應用程序,該應用程序在每頁頁面加載前運行一個方法,以確保設置必要的sessionScope數據。該數據的一部分是爲其定義數據的用戶的名稱。這樣,如果用戶名更改,我們清除數據併爲當前用戶重新加載。

使用這種方法,您可以使用用戶名作爲密鑰來定義一個MAP或JSON對象,以便在人員登錄和註銷時保留差異,但是我不確定這是否是一個非常明智的做法,因爲更改標識是僅在開發和測試中才是現實的。這在生產中不是正常的事情。

/Newbs