2012-09-25 55 views
1

我有一個小應用程序,我需要實現tomcat認證。在挖掘互聯網後,我發現Realm是解決方案。另外我得到了如何配置我的tomcat-users.xml,server.xml和web.xml。 但它仍然無法正常工作。使用基本的tomcat認證

我在web.xml中

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>hp</web-resource-name> 
    <url-pattern>/pages/bill.jsp</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>Admin</role-name> 
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>BASIC</auth-method>> 
    <realm-name>default</realm-name>> 
</login-config> 

在登錄時,配置添加該代碼,我得到元素「登錄,配置」不能有個性[兒童],因爲該類型的內容類型 爲元素 - 只要。 可能是什麼問題?

回答

3

這個問題可能已經在這個網站的其他地方回答了。但這裏有一些幫助。

  1. 請勿使用BASIC(或DIGEST)身份驗證,請使用FORM身份驗證。這就是爲什麼:How to force Jetty to ask for credentials with BASIC authentication after invalidating the session?

  2. 你可能要開始與(表格認證&)存儲領域第一(即具有在Tomcat中-users.xml中定義的UERS &角色)的話,說不定有JDBC領域一展身手, &終於DatasourceRealm。

Tomcat documentation有這個爵士樂是如何工作的想法。

我寫了一些關於這個主題的註釋(身份驗證方法&),看看,應該比下面的tomcat文檔更容易一些。 https://sites.google.com/site/adrienitnotes/java/web-apps-login-system-in-tomcat-container

  • 警告:你會概率開始有記憶的境界,在Eclipse(問題與Tomcat的user.xml配置的變化)運行Tomcat時要小心:

當你創建一個新的服務器,將一組配置文件從您的Tomcat安裝導入(複製)到工作區中Servers項目下的相應文件夾中。有時這個文件不會被eclipse更新,因此您的更改將被忽略。

解決方案1:建議通過手動在Tomcat中部署.war文件(在Eclipse之外運行Tomcat)來運行此類應用程序。

解決方案2:修改\服務器\ Tomcat的7.0版服務器在本地主機,配置\ Tomcat的users.xml中相關更改可能解決這個問題。

4

你的XML是無效的 - 你有兩個 「>」 字符

更正數據從

<login-config> 
    <auth-method>BASIC</auth-method>> 
    <realm-name>default</realm-name>> 
</login-config> 

<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>default</realm-name> 
</login-config> 

我不知道有什麼錯誤的tomcat會給你無效的XML,但它肯定不會像現在這樣工作。

1

我正好絆倒在這個老問題,你可能已經解決了這個問題很久以前的事,但我想我可以提供反正答案。

您在</auth-method></realm-name>之後有額外的>個字符。刪除這些應該可以解決問題。