url-pattern et des caractères génériques
Lors de la configuration de la sécurité de contraintes pour une web-module de rôles en application J2EE, je vais avoir le problème suivant:
Application:
Donner une servlet nommée customersServlet, qui reçoit deux paramètres dans l'URL:
- Une chaîne de caractères représentant une opération (INS, UPD, DLT et DSP).
- Un numéro d'identification pour identifier un client sur lequel l'opération sera effectuée.
E. G.: l'url /servlet/cusotmersServlet?UPD,5
est utilisé pour mettre à jour un numéro de client 5 données, et l'url /servlet/customersServlet?DLT,8
est utilisée pour supprimer un numéro de client 8.
Problème:
Si j'utilise ce security-constraint la servlet ne peuvent être accessibles que par le rôle spécifié, ce qui est 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>
Mais je veux limiter la possibilité d'insérer des clients qu'à un rôle nommé clientAdmin.
J'ai essayé plusieurs formats d'url, mais aucun d'entre eux fonctionne comme je veux (tous de permettre à chaque rôle pour accéder à la servlet avec n'importe quel paramètre):
<url-pattern>/servlet/clientsServlet?INS,*</url-pattern>
<url-pattern>/servlet/clientsServlet?INS/*</url-pattern>
...
Comment utiliser le caractère générique *
dans le url-pattern
tag?
Remarque: Le application ne peut pas être changé, j'ai donc besoin d'une solution qui implique seulement de toucher le descripteur de déploiement.
OriginalL'auteur mmutilva | 2010-05-04
Vous devez vous connecter pour publier un commentaire.
La
<url-pattern>
balise permet seulement d'un sous-ensemble très restreint de caractères génériques. Ce n'est probablement pas ce que vous êtes habitué à d'autres situations, où un*
peut être utilisé à n'importe quelle position. Vous pouvez télécharger la spécification Servlet ici:http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html
Section SRV.11.2 de ce document décrit la façon dont ces modèles URL sont interprétées. En particulier, la
*
ne pas signifie "zéro ou plusieurs caractères quelconques" ici./someText*
à/someText/*
et bien sûr changer l'url des modèles de la "someText' servlets pour correspondre à ce modèle.OriginalL'auteur Roland Illig
Ne sais pas si cela compte comme un changement d'application - vous pouvez peut-être penser que c'est un plug-in. Vous pouvez ajouter un
Filtre
. Cela suppose la possibilité d'ajouter un nouveau POT à WEB-INF/libs et la capacité à définir le filtre dans web.xml. LeFilter
vous permettent de restreindre l'accès par programmation.OriginalL'auteur McDowell