2012-09-16 19 views
1

我想了解Java EE(EJB,JSF ...)的概念,因此我正在研究示例應用程序。 不幸的是,我有問題要理解一些概念應該如何協同工作,以及我是否以正確的專業方式進行操作。在這一點上,我對所有這些不同的方法感到困惑,希望有人能幫助我。使用JDBC-Realm進行JSF,EJB和基於表單的登錄的概念

我的應用程序的核心功能由一個文檔服務器組成,其中註冊用戶可以上傳文檔並用有用的信息描述它。

文檔應該簡單地保存在服務器上,所有信息應該存儲在MySQL數據庫中。 我用Netbeans創建了三個項目。

  • 企業應用程序項目(DocApp)
  • EJB模塊(DocApp的EJB)
  • 和Web應用程序項目(DocApp戰)。

主要的事情做工精細喜歡

我現在的問題是,在一個特定的子目錄中的所有頁面應該只由註冊用戶訪問。

我看到的唯一方法是使用一個SessionScopedManagedBean,而不是使用多個RequestScopedManagedBeans。 這似乎是一個不好的做法,但我不知道如何處理,否則。 我理解它的方式,每個JSF Page(xhtml)應該有一個ManagedBeand。

有沒有一種很好的方法來處理這個問題,還是我做錯了什麼?

回答

1

訪問整個子目錄的默認機制是在web.xml中爲表示該目錄的URL模式添加安全約束。

每個註冊的用戶應該得到「已註冊」,表示正在註冊一個角色,如

這個角色,然後添加到web.xml中的安全約束。

JSF和Servlet容器管理的安全性之間的交互有點尷尬,但它確實有效。

+0

感謝您的回答。我知道這是它應該如何工作。但是,如果我這樣做,那麼每當有一個重定向到該目錄中的另一個頁面時,登錄信息就會消失,除非我創建** ONE ** SessionScoped ManagedBean,這是我猜的錯誤做法。 – SuiTheDoc

+0

我明白了。書中的「登錄信息」究竟是什麼?這是你自己的對象在例如會話範圍內,或者HttpServletRequest#isUserInRole是否不返回true? –

+0

我不熟悉HttpServletRequest#isUserInRole函數。用「登錄信息」我的意思是用戶名/密碼。我正在使用基於表單的登錄和安全約束。如果會話結束,我將重定向到登錄頁面。 – SuiTheDoc