我尝试在我的应用程序中使用多个安全领域,但在部署期间我遇到异常:
消息:检测到多个login-config元素
web.xml片段:
....
<security-constraint>
<display-name>Admin Constraint</display-name>
<web-resource-collection>
<web-resource-name>Admin Pages</web-resource-name>
<description/>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>ApplicationRealm</realm-name>
</login-config>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>mb-domain</realm-name>
</login-config>
<security-role>
<description/>
<role-name>admin</role-name>
</security-role>
<security-role>
<description/>
<role-name>user</role-name>
</security-role>
...
我做错了什么?
答案 0 :(得分:4)
每个Web模块部署描述符只能使用一个<login-config>
。
根据Servlet Specification v. 3.1的§14.2:
处理部署描述符的规则
[...]
- 此版本规范中
web-app
下的子元素可以是任意顺序。由于XML Schema的限制,元素distributable
,session-config
,welcome-file-list
,jsp-config
,login-config
和locale-encoding-mapping-list
的多样性是从“可选”更改为“0或更多”。当部署描述符包含多个session-config
,jsp-config
和login-config
元素时,容器必须通过描述性错误消息通知开发人员。
备选方案: