3

好的,所以我以前在经典的 web.xml 中使用过这种技术,但是现在我使用的是 WebApplicationInitializer,因此无法让它工作。

我的 WebApplicationInitializer 包含以下代码:

HttpConstraintElement constraint = new HttpConstraintElement(
        TransportGuarantee.NONE,
        new String[]{"sponsorUsers"});
ServletSecurityElement servletSecurity =
        new ServletSecurityElement(constraint);
dispatcher.setServletSecurity(servletSecurity);

我试图为servlet中的任何资源请求的任何http方法要求基本身份验证(用户名+密码)。我得到的只是一个 403 - 没有提示输入用户名。我怀疑我需要将 auth-method 设置为 BASIC,就像在 xml 中一样:

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>User Auth</realm-name>
</login-config>

但是在 Java 类中看不到等价物。有什么帮助吗?谢谢!

4

1 回答 1

4

AWebApplicationInitializer基本上是 Servlet 3.0 的 Spring 扩展ServletContainerInitializer

有一些事情你不能做ServletContainerInitializer,或者ServletContext更具体地说,其中之一是配置一些安全组件,例如login-config.

相反,您可以使用属性设置为aServletContainerInitializer和 a 。例如,web.xmlmetadata-completefalse

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    metadata-complete="false" version="3.0">

然后在其中添加您的<login-config>元素。

于 2013-09-18T14:59:57.100 回答