在我们的web.xml中,我们有类似
的内容 <security-constraint>
<auth-constraint>
<role-name>ROLE_USER</role-name>
</auth-constraint>
<web-resource-collection>
<url-pattern>/app/*</url-pattern>
</web-resource-collection>
</security-constraint>
这仅适用于我们的生产Websphere环境 现在我们不用Websphere测试,我们使用Jetty和JBoss。因此,我们有特定的Spring配置文件来处理这些环境的不同安全配置。但是Spring配置文件范围没有到达web.xml,我们仍然坚持使用这些安全约束指令,这些指令与我们的测试环境中的Spring Security冲突。
现在我们可以使用Maven配置文件来解决这个问题,如this question中所述,但这涉及到超过1个版本,我们希望避免这种情况。
总结一下,有没有办法不考虑Jetty的web.xml安全性? (如果你有JBoss 7的答案,那也很棒!)
编辑:使用短消息"No Realm"
执行Jetty 6时出错为http 500。另一种解决方案可能是自动记录默认的虚拟用户,但我不知道这是否可行。
答案 0 :(得分:1)
终于做到了这一点(Jetty 6):
我们在WEB-INF中添加了一个jetty-web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="securityHandler">
<New class="mypackage.util.JettySecurityHandler" />
</Set>
</Configure>
重写的SecurityHandler:
package mypackage.util;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.Response;
import org.mortbay.jetty.security.SecurityHandler;
import java.io.IOException;
public class JettySecurityHandler extends SecurityHandler {
@Override
public boolean checkSecurityConstraints(String pathInContext, Request request, Response response)
throws IOException {
return true;
}
}
这不是很好,因为:
- 自定义代码
- 特定版本(不适用于Jetty 7和8)
但它确实有效。