![](/img/trans.png)
[英]How to restrict access to not logged users to certain pages? (JSF 2.0)
[英]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應用程序中的安全性是一個更高級的主題。 基本上你有兩種方法:
這里將詳細介紹如何設置基於容器的安全性。 總而言之,您必須實現一個簡單的表單(沒有JSF表單!),其中包含用戶名和密碼字段的特定操作和特定ID。 之后,您可以使用web.xml文件輕松限制對特定URL模式的訪問。 在web.xml文件中,您可以限制對某些用戶角色的某些URL模式的訪問。 從用戶名到用戶角色的映射由安全領域完成。 如何設置安全領域是例如Tomcat 在這里 。
如果您想自己實現安全性,則必須實現一個ServletFilter來檢查所有請求的URL,並轉發未登錄到您的登錄表單的用戶,或者在用戶獲得授權的情況下傳遞請求。 如果用戶無權查看該頁面,則必須將用戶轉發到錯誤頁面。 由於CDI注入不適用於ServletFilter,因此您必須從HttpSession中查找存儲有關您的用戶信息(登錄,權限)的bean。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.