好的,因此我以前在经典的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类中看不到等效项。有什么帮助吗?谢谢!
最佳答案
WebApplicationInitializer
基本上是Servlet 3.0 ServletContainerInitializer
的Spring扩展。
您可以使用ServletContainerInitializer
或ServletContext
来做一些更具体的事情,其中之一是配置一些安全组件,例如login-config
。
而是可以将ServletContainerInitializer
属性设置为web.xml
,同时拥有metadata-complete
和false
。例如,
<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>
元素。关于java - 结合使用Tomcat Basic Auth和新的WebApplicationInitializer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18875356/