簡體   English   中英

JSF2 - 在某些xhtml頁面上限制訪問的靈活方式,在訪問時應用簡單的邏輯

[英]JSF2 - Flexible way on restrict access on certain xhtml pages, apply simple logic on access

嗨,我實際上是想在一個非常具體的問題上得到提示或想法。 技術上下文是帶有JSF 2.1的java Web應用程序。

所以我有一個由JSF 2.1提供支持的簡單java ee app。 結構如下

\webapp
   \WEB-INF
      \templates 
       header.xhtml
       menu.xhtml
      web.xml 
   \secured 
      \operation1
       op1.xhtml
     \operation2
       op2.xhtml
     \operation3
      op3.xhtml 
    userhome.xhtml
  login.xhtml

我有一個@WebFilter ,在沒有設置' @WebFilter情況下限制對/secured/*的訪問(實際上是一個Session Scoped Bean)。

在登錄的同時,我根據用戶憑證創建動態菜單。 此菜單(MenuItems)指向一個或多個操作(xhtml頁面)。

到目前為止,用戶登錄,菜單是動態的,生成鏈接,點擊后他/她可以導航到他/她應該做的任何操作。

我的問題是我無法決定限制訪問這些頁面的絕對URL的優雅方式。 如果user1被“授權”執行operation1但不執行operation2或operation3,那么目前我找不到最優雅的方式來檢查他的會話狀態並應用通用規則(導航規則?),如果實際的web用戶,則寫在url上禁止操作的絕對路徑。

'/secured/operation1/op2.xhtml'

實現這種要求的JSF2最兼容的方式是什么?

我在每個單獨的opxx.xhtml頁面上嘗試了preRenderView,遺憾的是它沒有用+我不喜歡在每個操作上重復它

非常感謝您的提示。

Web應用程序中的安全性是一個更高級的主題。 基本上你有兩種方法:

  • 基於容器:這意味着像Tomcat這樣的servlet容器為您完成工作(推薦)
  • 基於應用程序:您必須自己完成這項工作

這里將詳細介紹如何設置基於容器的安全性。 總而言之,您必須實現一個簡單的表單(沒有JSF表單!),其中包含用戶名和密碼字段的特定操作和特定ID。 之后,您可以使用web.xml文件輕松限制對特定URL模式的訪問。 在web.xml文件中,您可以限制對某些用戶角色的某些URL模式的訪問。 從用戶名到用戶角色的映射由安全領域完成。 如何設置安全領域是例如Tomcat 在這里

如果您想自己實現安全性,則必須實現一個ServletFilter來檢查所有請求的URL,並轉發未登錄到您的登錄表單的用戶,或者在用戶獲得授權的情況下傳遞請求。 如果用戶無權查看該頁面,則必須將用戶轉發到錯誤頁面。 由於CDI注入不適用於ServletFilter,因此您必須從HttpSession中查找存儲有關您的用戶信息(登錄,權限)的bean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM