2017-12-18 361 views
0

我試圖熟悉TomEE,或者至少TomCat 7用於我目前正在工作的舊應用程序。tomcat 7 web.xml層次結構 - 用戶和角色 - java servlet

在tomcat位置有一個web.xml。據我瞭解,這是用於所有沒有自己的web.xml的servlet,對吧?或者這也可以用於那些擁有自己特性的servlet嗎?

不確定這個配置文件的層次結構。

試圖獲得一個基本身份驗證工作的模塊,可以通過一個url分配像\ localhost:8080 \ AB \ localhost:8080 \管理員的tomcat用戶工作正常。 但無法獲取\本地主機的登錄:8080 \ AB

我試圖修改web.xml,如:

<security-role> 
<role-name>users</role-name> 
</security-role> 
<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>basic demo resource</web-resource-name> 
     <url-pattern>\AB\*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>users</role-name> 
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>BASIC</auth-method> 
</login-config> 

但仍需要訪問這個servlet沒有登錄。

比我發現,在這個Java項目中還有另一個web.xml,我也試着用上面的代碼進行修改。 我知道我做錯了什麼,但不知道現在是什麼。

「用戶」角色是在tomcat-users.xml中創建的,並且用戶也被分配給該組。

回答

0

您只定義了安全約束而不是角色。你需要定義tomcat用戶和相應的角色。

<tomcat-users> 
    <role rolename="AB"/> <!-- you have to define all roles --> 
    <user username="myname" password="mypassword" roles="AB"/> 
    <!-- you have to assign login and roles --> 
</tomcat-users> 
+0

我已經添加在其位於tomcat目錄是tomcat-users.xml中一個角色和用戶。所以角色「用戶」和角色中的用戶都存在。或者,如果我在tomcat-users.xml中定義它並嘗試從項目中包含的web.xml中訪問該角色,它是行不通的。這就是標籤所做的,對嗎? – flix

0

tomcat目錄中的web.xml包含默認設置。 webapp可以在自己的web.xml中覆蓋定義。

要訪問/ AB您需要:

  • 使用斜線:<url-pattern>/AB/*</url-pattern>
  • 有與角色users用戶在您的用戶數據庫
  • 在登錄時輸入的用戶名和密碼彈出對話框。
+0

好的,用正斜槓修改了網址。這必須足以獲得登錄提示,對嗎?當然,這隻有在角色和用戶都已定義的情況下才有效,但登錄提示應該出現。現在情況並非如此。我如何獲得用戶數據庫中的用戶?通過使用tomcat目錄中的tomcat-users.xml? – flix

+0

你使用的是什麼類型的領域? –

+0

沒有爲此定義任何內容。 server.xml中的領域似乎是默認的。 – flix