我正在尝试熟悉 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 中创建的,并且用户也被分配到该组。
最佳答案
您只定义了安全约束,没有定义角色。您需要定义 tomcat 用户和 crossponding 角色。
<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>
关于authentication - tomcat 7 web.xml 层次结构 - 用户和角色 - java servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47865094/