ich einen Java-Webapp, die web.xml seine Sicherheit konfigurieren verwendet:Web.xml Sicherheitsbeschränkung auf context-root gilt nicht
<security-constraint>
<web-resource-collection>
<web-resource-name>webPages</web-resource-name>
<description>All web resources</description>
<url-pattern></url-pattern>
<url-pattern>/admin/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admins</role-name>
</auth-constraint>
<user-data-constraint>
<description>SSL not required</description>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
Ich möchte alle Seiten unter/admin/* geschützt werden und das funktioniert. Der Benutzer sieht zunächst korrekt einen Login-Bildschirm und wird anschließend auf die ursprünglich angeforderte Seite umgeleitet.
Ich möchte auch meine Kontext root geschützt: http://host:port/context/ Wenn ich jedoch das Muster <url-pattern></url-pattern>
konfigurieren und eine Anfrage an den Stamm, mein Java-Controller nur zu arbeiten beginnt und zeigt die Ansicht ohne den Benutzer jemals den Anmeldebildschirm zu sehen. Warum funktioniert dieses Muster für Dinge wie <servlet-mapping>
(um die Anfrage dem Feder-Servlet zuzuordnen), aber nicht als Sicherheitsbeschränkung?
Ich habe sowohl in Chrome und Firefox getestet und mehrfach neu gestartet.
Haben Sie/* für Ihre Root-Kontext-Konfiguration? – aksappy
@aksappy Nein, weil/* als URL-Muster bedeutet "fange alle Anfragen", ich will das nicht, nur den Wurzelkontext. Zum Beispiel sollte /otherpage.do weiterhin ohne Berechtigung arbeiten. – user1884155
Gemäß der Spezifikation, was Sie getan haben, ist richtig. – aksappy