是否可以阻止用戶在多個瀏覽器選項卡或窗口中打開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. 防止在新選項卡/窗口中打開
- 4. Javascript在單個瀏覽器中打開多個選項卡
- 5. 如何防止中間按鈕在瀏覽器中打開新選項卡?
- 6. 在AJAX/GWT應用程序中打開新的瀏覽器窗口/選項卡
- 7. 在新的瀏覽器窗口中打開DNN(DotNetNuke)頁面
- 8. 如何在PDF中打開超鏈接(在瀏覽器中打開)將在新選項卡/窗口中打開
- 9. 如何限制用戶在同一會話中打開多個瀏覽器選項卡(窗口)?
- 10. 瀏覽器後面的打開窗口
- 11. 在Angularjs的多個瀏覽器選項卡中打開多個視圖
- 12. 瀏覽器選項在新選項卡中打開鏈接
- 13. 打開窗口瀏覽器
- 14. Cookie和多個瀏覽器窗口/選項卡
- 15. ASP.Net在CodeBehind中打開瀏覽器中的新選項卡
- 16. 如何打開多個選項卡的Android瀏覽器?
- 17. 防止多個JFrame窗口打開
- 18. 如何防止在新窗口中打開iframed頁面
- 19. 用戶response.redirect在新選項卡或窗口中打開鏈接
- 20. 使用jQuery在瀏覽器中打開非活動選項卡
- 21. 是否有可能禁止在瀏覽器中使用JavaScript打開新選項卡或窗口?
- 22. 在java中現有瀏覽器/選項卡中打開URL
- 23. 如何在多個瀏覽器窗口打開時阻止多個Ajax請求
- 24. 在flex中瀏覽器/選項卡窗口截圖
- 25. 打開的文件已經在窗口瀏覽器中打開
- 26. 如何在Eclipse PDT中打開新的瀏覽器選項卡?
- 27. 如何在新的瀏覽器選項卡中打開圖像?
- 28. 新頁面在新窗口中打開,而不是Firefox中的新選項卡
- 29. 帶有已打開瀏覽器窗口列表的NSIS頁面
- 30. 打開多個瀏覽器選項卡,但只有一個將打開
請詳細說明有關爲您所想,這是SOLU問題而不是問如何實現一個解決方案,畢竟這本身可能不是正確的解決方案。 – BalusC 2010-10-15 12:08:11
@BalusC該問題涉及完全有狀態的舊JSF應用程序。爲什麼試圖找出某種方式告知用戶在兩個單獨的選項卡中打開應用程序有潛在危險。我們絕不能將會話託管的bean更改爲請求託管的bean。 – mgamer 2010-10-15 12:20:42