2013-07-30 38 views
0

我有一個JSF 2項目,並使用Eclipse Inigo作爲IDE,並部署到Tomcat 6(它運行在VirtualBox中的虛擬機中以模擬目標環境)。我沒有使用Eclipse進行部署。現在我只是導出一個.war文件並從Tomcat管理器屏幕上進行部署。我正在使用HSQLDB來存儲用戶,密碼和用戶角色。一個引起我困惑的項目需求是我的網絡應用程序必須完全獨立。也就是說,我提供了一個.war文件,並將其插入,而無需對Tomcat進行其他配置。使用Tomcat的JSF項目表單身份驗證DataSourceRealm

我讀過配置我的項目形式驗證,包括一噸:SO question 1SO question 2SO question 3Tomcat Realm configJava EE 6 security,等等。這些資源真的幫助瞭解如何配置我的項目。我以爲我快到了。但是,當我部署Web應用程序並嘗試訪問受限制的頁面時,我總是收到登錄錯誤頁面。我嘗試使用DB中的各種用戶登錄所需的角色,並且我認爲DB根據Tomcat Documentation進行了設置。

我讀過

所有的教程從我的情況不同,在這種或那種方式:

  1. 使用GlassFish而不是Tomcat的
  2. 用途BASIC認證而不是FORM
  3. 存儲用戶,密碼,角色tomcat-users.xml而不是關係數據庫表
  4. server.xml中聲明角色,而不是在.war文件中的某個位置。

特別是第4點阻止我完全理解什麼是和不可能的(開箱即用)。

我稍後會編輯此問題以發佈代碼(web.xml等),但首先我想問一個類似於'SO問題2'(上面)中的問題,其中OP詢問它是否是無需在應用程序服務器中定義某些內容即可進行表單認證。在其中一個答案中,它聽起來像是不可能的,但它不是很確定。

那麼,是否可以在不修改服務器中的文件的情況下實現表單身份驗證(特別是如許多教程所示的server.xmltomcat-users.xml)?可以通過DataSourceRealm進行認證,並且.war是完全自包含的。如果是這樣,怎麼樣?我可以在.war中包含額外的.xml文件,它可以做到這一點嗎?我可以包括我需要web.xmlcontext.xml

我試過包括所有在web.xmlcontext.xml,但它不工作。我認爲我的東西配置正確,除了server.xml文件中沒有任何東西。

我現在就離開它。如果我需要的是可能的話,我將用代碼編輯來試圖弄清楚我做錯了什麼,否則我將省去麻煩。另外,如果我所需要的不可能使用表單身份驗證,任何人都可以推薦一個很好的替代方案來實現一個獨立的.war中的相同內容。 (因爲沒有更好的方式來描述它,所以我在「自給自足的戰爭」一詞中拋出了它......如果有更好或更準確的術語,請告訴我。)

回答

1

不幸的是,您無法做到這一點。 領域在服務器中配置。xml文件,所以如果你想根據數據庫驗證用戶,你必須在server.xml文件中配置它。

如果你想驗證針對數據庫的用戶,並確保所有的配置將是您的WAR文件中,請考慮使用Spring Security框架:http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html 它是偉大的,簡單的框架,解決了很多認證/授權問題。

+0

感謝您的信息。我嘗試不同的組合越多,並且沒有成功,我越懷疑它確實是不可能的。也謝謝關於Spring Security的建議。我看到它在SO的其他地方和Shiro和Seam一起推薦。 – neizan