2012-07-16 12 views
8

Chciałbym tylko zabezpieczyć hasłem katalogu głównego na mojej ścieżce kontekstowej dla Jetty WebApp. Moja ścieżka kontekstu to/MojaApl, więc chciałbym wymaga hasła dostępu:Dopasowywanie adresu url-pattern do tylko katalogu głównego

http://localhost:8080/MyApp 

ale nie dla:

http://localhost:8080/MyApp/cometd 

Mój obecny zestaw up jest poniżej (należy zwrócić uwagę na URL wzór):

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Private Page</web-resource-name> 
      <url-pattern>/</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>moderator</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>Test Realm</realm-name> 
</login-config> 

Spodziewam się, że działa to po prostu z natury jak/i/* ogólnie. Ja również widziałem tego zasobu, które moim zdaniem jest co sugeruje, że powinno to dość dużo pracy: http://www.coderanch.com/t/364782/Servlets/java/there-key-difference-between-url

Jednak dla mojego przypadku wzorców URL:

<url-pattern>/</url-pattern> 

i

<url-pattern>/*</url-pattern> 

wydają działający dokładnie tak samo: zarówno

i

http://localhost:8080/MyApp/cometd 

są ZARÓWNO chronione hasłem.

Oczywiście, jeśli zmieni się/nothingishere, tylko jako test sanity, nic nie jest chroniony hasłem, z wyjątkiem/MojaApl/nothingishere

Czy ktoś wie jak to tylko chronić katalog główny dla apletów internetowych?

Odpowiedz

5

Oto odpowiedź dla Ciebie:

<?xml version="1.0" encoding="UTF-8"?> 

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     version="3.0"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Private Page</web-resource-name> 
      <url-pattern>/</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>moderator</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Public page</web-resource-name> 
      <url-pattern>/test/*</url-pattern> 
     </web-resource-collection>   
    </security-constraint> 
    <login-config> 
     <auth-method>BASIC</auth-method> 
     <realm-name>Test Realm</realm-name> 
    </login-config> 
</web-app> 

W tej konfiguracji, katalog główny jest chroniony hasłem i katalog /test/... nie jest. Myślę, że o to prosisz.

Ta konfiguracja jest testowana na serwerze Tomcat 7+ i nowym projekcie utworzonym od zera w NetBeans (mogę wysłać do Ciebie e-mail z całego źródła, jeśli jest to potrzebne).

To wyjście: output

+0

Dzięki, to _exactly_ czego szukałem. – Drewch

+0

Działa również dla mnie :) Będę nagradzać nagrodę, gdy tylko minie 24 godziny. –

+1

oczywiście ta odpowiedź dotyczy nie tylko pomostu, ale wszystkich zgodnych z j2ee serwerów internetowych. Więc możesz zmienić nagłówek ... Btw, cieszę się, że pomogłem – MaVRoSCy

Powiązane problemy