是否可以阻止用戶在多個瀏覽器選項卡或窗口中打開JSF頁面?防止用戶在瀏覽器中的多個選項卡/窗口中打開JSF頁面
1
A
回答
2
@BalusC該問題涉及完全有狀態的舊JSF應用程序。爲什麼試圖找出某種方式告知用戶在兩個單獨的選項卡中打開應用程序有潛在危險。我們絕不能將會話託管的bean更改爲請求託管的bean。
使所有這些bean請求範圍,安裝Tomahawk,加<t:saveState value="#{bean}" />
爲每個bean的每一個,其中要準確保留在後續請求同一個bean的狀態視圖。這可以在標籤/窗口中獨立工作。
如果沒有戰斧,替代方案將爲您希望在後續請求中保留的每個bean屬性添加<h:inputHidden />
。但是,我可以想象,如果有很多或者它們不是標準EL類型(因此您可以創建一個Converter
),這可能會產生令人討厭的樣板代碼。但那是你得到的報酬。
0
我想到的一種情況是: 將一個JavaScript組件放在頁面中,該組件會通過AJAX不斷髮送心跳信號到服務器。只要瀏覽器發送心跳,該頁面將被標記爲「正在查看」。只要頁面上有該標誌,就應該拒絕對該頁面的其他請求。
細節可能比這個簡單的故事要複雜得多(例如,你可能需要某種'頁面ID'與心跳一起發送),但你明白了(......我希望:) 。
只要您願意付出代價,一切皆有可能。
1
我同意接受的解決方案,但如果你還是要做到這一點,這些步驟爲我工作(僞代碼/僞蟒蛇):
在JS方面:
if tabId not set:
. generate random number
. set property in sessionStorage
otherwise:
. get it from sessionStorage
make an ajax callback and send tabId
onError:
. alert();
. close current tab (if possible);
. logout
後端:(JSF):
Create custom filter:
if request contains the tabId info:
if it matches session's tabId: (being tabId not null)
sent response status code to an error such as forbidden
Optionally invalidate session
otherwise apply session filtering (do nothing)
相關問題
- 1. 如何防止瀏覽器使用JavaScript打開新的選項卡/窗口?
- 2. 如何在單個窗口中製作多個打開的瀏覽器的選項卡式面板瀏覽器
- 3. javascript:防止在瀏覽器中打開第二個_blank窗口?
- 4. 防止在瀏覽器中打開另一個相同的選項卡
- 5. 防止在新選項卡/窗口中打開
- 6. Javascript在單個瀏覽器中打開多個選項卡
- 7. 防止瀏覽器窗口時,Chrome瀏覽器開發工具窗格打開
- 8. 在某個瀏覽器選項卡/窗口中打開一個URL
- 9. 如何在同一瀏覽器中打開多個選項卡?
- 10. 如何防止中間按鈕在瀏覽器中打開新選項卡?
- 11. 在AJAX/GWT應用程序中打開新的瀏覽器窗口/選項卡
- 12. 防止子窗口打開時在父瀏覽器窗口中導航
- 13. 在新的瀏覽器窗口中打開DNN(DotNetNuke)頁面
- 14. 如何在PDF中打開超鏈接(在瀏覽器中打開)將在新選項卡/窗口中打開
- 15. 如何限制用戶在同一會話中打開多個瀏覽器選項卡(窗口)?
- 16. 如何防止mailto事件在瀏覽器中打開新選項卡
- 17. 打開窗口並瀏覽頁面
- 18. 瀏覽器後面的打開窗口
- 19. 防止swf遊戲打開新的瀏覽器窗口
- 20. 在Angularjs的多個瀏覽器選項卡中打開多個視圖
- 21. 瀏覽器選項在新選項卡中打開鏈接
- 22. GWT:未打開瀏覽器選項卡打開新郵件窗口
- 23. 在一個Internet Explorer窗口中打開多個選項卡
- 24. OpenSwing打開窗口選項卡欄 - 最多6個選項卡
- 25. 打開窗口瀏覽器
- 26. target =「_ blank」in h:commandlink在瀏覽器的新選項卡中未打開頁面
- 27. 如何使用adb打開多個Web瀏覽器選項卡?
- 28. 如何在jquery中打開多個窗口瀏覽器
- 29. 在黃瓜中自動打開多個瀏覽器窗口
- 30. 在循環中打開多個瀏覽器窗口。
請詳細說明有關爲您所想,這是SOLU問題而不是問如何實現一個解決方案,畢竟這本身可能不是正確的解決方案。 – BalusC 2010-10-15 12:08:11
@BalusC該問題涉及完全有狀態的舊JSF應用程序。爲什麼試圖找出某種方式告知用戶在兩個單獨的選項卡中打開應用程序有潛在危險。我們絕不能將會話託管的bean更改爲請求託管的bean。 – mgamer 2010-10-15 12:20:42