J'ai créé un serveur Grizzly qui renvoie JSON. Il fonctionne très bien:Comment ajouter des filtres au serveur Grizzly?
final ResourceConfig resourceConfig = new ResourceConfig().packages("com.mypackage");
resourceConfig.setApplicationName("My-Service");
resourceConfig.register(JacksonJaxbJsonProvider.class);
server = GrizzlyHttpServerFactory.createHttpServer(uri, resourceConfig);
J'ai besoin filtres que
- Vérifiez si l'en-tête d'autorisation contient une clé valide
- Réagit avec 302/redirect si
x-forwarded-proto
esthttp
(avec un emplacement défini sur la (https
équivalent) - Répond avec 403/interdit si
x-forwarded-for
n'est pas sur la liste blanche
En ce moment je fais ces contrôles comme ceci:
@Path ("v1") public class Façade {
@GET
@Path("/getinfo/{infotype}")
@Produces(MediaType.APPLICATION_JSON)
public Response getNextPwc(@HeaderParam("authorization") String authorizationKey,
@Context Request request,
@HeaderParam("x-forwarded-proto") String xForwardedProto,
@HeaderParam("x-forwarded-for") String xForwardedFor,
@PathParam("infotype") String infoType) {
Response errorResponse = getErrorResponse(authorizationKey, request, xForwardedFor, xForwardedProto);
if (errorResponse != null) {
return errorResponse;
}
... start work with infoType here ...
Il fonctionne - le serveur se comporte correctement - mais le code est en le mauvais endroit (et je dois me rappeler de l'ajouter à toutes les nouvelles méthodes) donc je voudrais le déplacer à un mécanisme de filtre à la place.
Toute aide est très appréciée.
(Je sais que les x-forwarded-proto
et x-forwarded-for
chèques ne sont pas preuve de balle, mais il vaut mieux que rien.)
Intéressant, je vais essayer ce Mais comment sont « votre » 'transport' et "mon" 'serve r' connecté? –
Merci pour la mise à jour! Maintenant, je commence à comprendre. –