/ / Passen Sie das Jetty-URL-Muster an das einzige Stammverzeichnis an - Webanwendungen, Servlets, Kennwörter, Jetty, Cometd

Passen Sie das Jetty-URL-Muster an das Root-Verzeichnis an - Web-Anwendungen, Servlets, Passwörter, Jetty, Cometd

Ich möchte nur das Stammverzeichnis in meinem Kontextpfad für eine Jetty WebApp mit einem Kennwort schützen. Mein Kontextpfad ist / MyApp, daher möchte ich ein Passwort für den Zugriff auf:

http://localhost:8080/MyApp

NICHT aber für:

http://localhost:8080/MyApp/cometd

Mein aktuelles Setup ist unten (auf das URL-Muster achten):

<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>

Ich würde erwarten, dass dies nur von Natur aus funktioniert, wie / und / *. Ich habe auch diese Ressource gesehen, von der ich glaube, dass sie ziemlich gut funktionieren sollte: http://www.coderanch.com/t/364782/Servlets/java/there-key-difference-between-url

Für meinen Fall jedoch die URL-Muster:

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

und

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

scheinen gleich zu sein: beide

http://localhost:8080/MyApp

und

http://localhost:8080/MyApp/cometd

sind beide passwortgeschützt.

Wenn ich zu / nothingishere wechsle, nur als Sanitätsprüfung, ist natürlich nichts passwortgeschützt, außer / MyApp / nothingishere

Kann jemand nur das Stammverzeichnis für Webservlets schützen?

Antworten:

5 für die Antwort № 1

Hier ist die Antwort für Sie:

<?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>

In dieser Konfiguration ist das Root-Verzeichnis kennwortgeschützt und die /test/... Verzeichnis ist nicht. Ich denke, das ist es, wonach Sie fragen.

Diese Konfiguration wird auf Tomcat 7+ getestet und ein neues Projekt von Anfang an in NetBeans erstellt (ich kann Ihnen die gesamte Quelle per E-Mail senden, wenn Sie es benötigen).

Dies ist die Ausgabe: Ausgabe