我按如下方式建立了一个码头安全领域(与mvn jetty:run
一起使用)。
这有效:
pom.xml
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<webAppXml>src/test/resources/jetty-test.xml</webAppXml>
<useTestScope>true</useTestScope>
</configuration>
</plugin>
jetty-test.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Get name="securityHandler">
<Set name="loginService">
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">MySecurityRealm</Set>
<Set name="config">src/test/resources/jetty-realm.properties</Set>
<Call name="start"/>
</New>
</Set>
<Set name="checkWelcomeFiles">true</Set>
</Get>
</Configure>
然后我尝试删除对jetty-test.xml
文件的需求,如下所示:
pom.xml
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<!-- <webAppXml>src/test/resources/jetty-test.xml</webAppXml> -->
<useTestScope>true</useTestScope>
<loginServices>
<loginService implementation="org.eclipse.jetty.security.HashLoginService">
<name>MySecurityRealm</name>
<config>${basedir}/src/test/resources/jetty-realm.properties</config>
</loginService>
</loginServices>
</configuration>
</plugin>
但它失败了:
2013-03-26 16:33:26.197:WARN:oejuc.AbstractLifeCycle:FAILED org.eclipse.jetty.security.ConstraintSecurityHandler@73937bc8: java.lang.IllegalStateException: No LoginService for org.eclipse.jetty.security.authentication.BasicAuthenticator@3d47dde in org.eclipse.jetty.security.ConstraintSecurityHandler@73937bc8
有什么想法吗?
我正在使用此文档: http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin#Configuring_Security_Settings
答案 0 :(得分:9)
请验证您的jetty-maven-plugin配置中<name>MySecurityRealm</name>
的子元素<loginServices>
是否与您的web.xml中<realm-name>MySecurityRealm</realm-name>
的{{1}}相同。< / p>
答案 1 :(得分:1)
您的web.xml中可能存在安全限制:reference。这就是当你注释掉jetty-test.xml配置时失败的原因。