0

我正在尝试熟悉 TomEE,或者至少熟悉我目前正在使用的旧应用程序中使用的 TomCat 7。

在 tomcat 位置有一个 web.xml。据我了解,这用于所有没有自己的 web.xml 的 servlet,对吗?或者这也将用于那些拥有自己的servlet?

不确定此配置文件的层次结构。

试图让一个模块的基本身份验证工作可以通过像 \localhost:8080\AB 这样的 url 分配的模块 \localhost:8080\manager 的 tomcat-users 工作正常。但无法登录 \localhost: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,我也尝试使用上面的代码对其进行修改。我知道我做错了什么,但不明白现在是什么。

角色“users”是在 tomcat-users.xml 中创建的,并且还为该组分配了一个用户。

4

2 回答 2

0

tomcat 目录中的 web.xml 包含默认设置。webapp 可以覆盖它自己的 web.xml 中的定义。

要访问 /AB,您需要:

  • 使用 FORWARD 斜杠:<url-pattern>/AB/*</url-pattern>
  • users在您的用户数据库中拥有一个具有角色的用户
  • 在登录弹出对话框中输入用户名和密码。
于 2017-12-18T09:33:04.140 回答
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>
于 2017-12-18T09:14:27.743 回答