2017-12-18 362 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