2008-09-16 7 views
2

Я пытаюсь использовать аутентификацию на основе форм в рамках встроенного проекта Jetty 6.1.7.Встраиваемый Jetty, обслуживающий статический контент с аутентификацией формы

Вот почему мне нужно обслуживать сервлеты и html (login.html) в том же контексте , чтобы сделать работу по аутентификации. Я не хочу защищать приложение с отверстиями с . В разных контекстах должны быть разные роли. Причал 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

+0

Предполагаю, что вы имели в виду Jetty 6.1.7 (не 1.6.7)? – jsight 2008-09-16 15:29:42

ответ

1

Используйте веб-приложения Дескриптор:

Вставить это в ваш 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.

+0

Спасибо, но он должен быть встроен. Я уточню свой вопрос. – Okami 2008-09-19 13:14:19

2

Наконец-то я понял, что нужно использовать последний причал 6.1.12 rc2. Я не проверял, что они изменили - я просто счастлив, что он работает сейчас.