2008-09-16 11 views
2

J'essaie d'utiliser l'authentification basée sur les formulaires dans un projet Jetty 6.1.7 intégré.Jetée embarquée servant du contenu statique avec authentification par formulaire

C'est pourquoi j'ai besoin de servir des servlets et html (login.html) dans le même contexte pour que l'authentification fonctionne. Je ne veux pas sécuriser l'application du trou puisque le contexte différent devrait avoir des rôles différents. La jetée javadoc indique qu'un ContextHandlerCollection peut gérer des gestionnaires différents pour un contexte, mais je ne le fais pas fonctionner à . Mon exemple ignorant les choses d'authentification ne fonctionnera pas, pourquoi?

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 

Toute pensée utile est la bienvenue!

Merci.

Okami

+0

Je suppose que vous vouliez dire Jetty 6.1.7 (pas 1.6.7)? – jsight

Répondre

1

Utilisez le descripteur d'application Web:

coller ce à votre 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> 

Sans authentification cela va cacher tout sauf le login.html.

+0

Merci, mais il doit être intégré. Je vais affiner ma question. – Okami

2

Enfin je l'ai eu raison, la solution est d'utiliser la dernière jetée 6.1.12 rc2. Je n'ai pas vérifié ce qu'ils ont changé - je suis juste content que ça marche maintenant.

Questions connexes