Java 通过表单身份验证提供静态内容的嵌入式Jetty

Java 通过表单身份验证提供静态内容的嵌入式Jetty,java,web-applications,jetty,Java,Web Applications,Jetty,我尝试在嵌入式Jetty 6.1.7项目中使用基于表单的身份验证 这就是为什么我需要在相同的上下文中提供servlet和html(login.html) 使身份验证生效。我不想保护hole应用程序,因为 不同的环境需要不同的角色。jetty javadoc声明 ContextHandlerCollection可以为一个上下文处理不同的处理程序,但我不能 让它工作起来。我的示例忽略了身份验证的内容,这是行不通的,为什么 ContextHandlerCollection contexts = new

我尝试在嵌入式Jetty 6.1.7项目中使用基于表单的身份验证

这就是为什么我需要在相同的上下文中提供servlet和html(login.html) 使身份验证生效。我不想保护hole应用程序,因为 不同的环境需要不同的角色。jetty javadoc声明 ContextHandlerCollection可以为一个上下文处理不同的处理程序,但我不能 让它工作起来。我的示例忽略了身份验证的内容,这是行不通的,为什么

ContextHandlerCollection contexts = new ContextHandlerCollection();

// serve html       
Context ctxADocs= new Context(contexts,"/ctxA",Context.SESSIONS);
ctxADocs.setResourceBase("d:\\tmp\\ctxA");
ServletHolder ctxADocHolder= new ServletHolder();
ctxADocHolder.setInitParameter("dirAllowed", "false");    
ctxADocHolder.setServlet(new DefaultServlet());
ctxADocs.addServlet(ctxADocHolder, "/");   

// serve a sample servlet
Context ctxA = new Context(contexts,"/ctxA",Context.SESSIONS);  

ctxA.addServlet(new ServletHolder(new SessionDump()), "/sda");
ctxA.addServlet(new ServletHolder(new DefaultServlet()), "/");

contexts.setHandlers(new Handler[]{ctxA, ctxADocs});

// end of snippet
欢迎任何有用的想法

谢谢


Okami使用web应用程序描述符:

将其粘贴到web.xml中:

<login-config>
    <auth-method>BASIC</auth-method>
</login-config>
<security-role>
    <role-name>MySiteRole</role-name>
</security-role>

<security-constraint>
    <display-name>ProtectEverything</display-name>
    <web-resource-collection>
        <web-resource-name>ProtectEverything</web-resource-name>
        <url-pattern>*.*</url-pattern>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>MySiteRole</role-name>
    </auth-constraint>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>ExcludeLoginPage</web-resource-name>
        <url-pattern>/login.html</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

基本的
神秘角色
保护一切
保护一切
*.*
/*
神秘角色
排除登录页
/login.html
没有一个

如果没有身份验证,这将隐藏除login.html之外的所有内容。

最后我正确地找到了答案,解决方案是使用最新的jetty 6.1.12 rc2。
我没有检查他们改变了什么-我只是很高兴它现在能工作。

我想你指的是Jetty 6.1.7(不是1.6.7)?谢谢,但它必须嵌入。我将改进我的问题。