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 № 1Hier 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: