url-Muster und Platzhalter
Während der Konfiguration der security-constraints für eine web-Modul Rollen im J2EE-Anwendung ich habe Folgendes problem:
Anwendung:
Angabe eines servlet-Namen customersServlet, die Sie erhält zwei Parameter in der URL:
- Eine Zeichenfolge, die eine operation (INS, UPD -, DLT-und DSP).
- Eine Identifikationsnummer zum identifizieren eines Kunden, auf dem die operation durchgeführt werden.
E. G.: die url /servlet/cusotmersServlet?UPD,5
wird verwendet, um den update-Kunden-Nummer 5 werden die Daten und die url /servlet/customersServlet?DLT,8
wird verwendet, um zu löschen Kundennummer 8.
Problem:
Wenn ich diese security-constraint das servlet kann nur zugegriffen werden, indem die Rolle angegeben, die ist ok:
<security-constraint>
<web-resource-collection>
<web-resource-name>...</web-resource-name>
<url-pattern>/servlet/clientsServlet*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>clientAdmin</role-name>
</auth-constraint>
</security-constraint>
Aber ich will die Möglichkeit einschränken, einfügen, die Kunden erst zu einer Rolle namens clientAdmin.
Ich habe versucht, mehrere url-Muster, aber keiner von Ihnen arbeitet, wie ich will (alle von Ihnen erlauben, jede Rolle Zugriff auf das servlet mit jedem beliebigen parameter):
<url-pattern>/servlet/clientsServlet?INS,*</url-pattern>
<url-pattern>/servlet/clientsServlet?INS/*</url-pattern>
...
Wie zu verwenden das wildcard - *
im url-pattern
tag?
Hinweis: Die Anwendung kann nicht geändert werden, also brauche ich eine Lösung, die nur bedeutet Sie ein berühren der deployment-descriptor.
InformationsquelleAutor mmutilva | 2010-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
<url-pattern>
tag erlaubt nur eine sehr eingeschränkte Untermenge von wildcards. Dies ist wahrscheinlich nicht das, was Sie von anderen Situationen, wo eine*
können an jeder beliebigen position. Sie können laden Sie die Servlet-Spezifikation hier:http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html
Abschnitt SRV.11.2 dieses Dokument beschreibt, wie diese URL-Muster interpretiert werden. Insbesondere die
*
hat nicht bedeutet "null oder mehr beliebige Zeichen" hier./someText*
zu/someText/*
und natürlich das url-Muster des 'someText' servlets auf übereinstimmung mit diesem Muster.InformationsquelleAutor Roland Illig
Nicht sicher, ob dies zählt als eine Anwendung ändern - vielleicht könnte man denken, dass es als ein plug-in. Man könnte hinzufügen, ein
- Filter
. Dies würde erfordern die Fähigkeit, fügen Sie eine neue JAR-Datei zu WEB-INF/libs und die Fähigkeit zum definieren der filter in web.xml. DieFilter
Ihnen erlauben würde, den Zugang zu beschränken programmgesteuert.InformationsquelleAutor McDowell