2017-09-26 6 views
2

J'ai une ressource, qui est sécurisée, si je supprime l'authentification, elle semble fonctionner, mais alors sans la sécurité, alors quel est le point?Passer des arguments à une ressource dropwizard sécurisée

Voici mon code:

@POST 
@Path("/secured") 
@Timed 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
@UnitOfWork 
@RolesAllowed("mainUser") 
public Response aliveSecure(@Auth User user, CustomRequest test) 
{ 
    CustomResponse resp = new CustomResponse(); 

    System.out.println(test.getMessage()); 
    return Response.status(Response.Status.ACCEPTED).entity(resp).build(); 
} 

Les types CustomRequest et CustomResponse sont assez POJO standards, ils tiennent juste une chaîne appelée « message » - ils sont en fait identiques, mais cela est juste un exercice que je suis en train compléter pour apprendre DropWizard. Maintenant, si je supprime les trucs @Auth ici, et @RolesAllowed, etc. - ce qui rend l'opération non-sûre, alors la méthode fonctionne normalement - mais tel quel, c'est l'erreur que j'obtiens en essayant de démarrer l'application .

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization. 
! [[FATAL] No injection source found for a parameter of type public CustomRequest at index 0.; 

Répondre

0

Le auth manual lit clairement -

Si vous souhaitez utiliser @Auth pour injecter un type de principal personnalisé dans votre ressource .

Par conséquent, vous assurerez d'ajouter ce qui suit à votre Service qui s'étend io.dropwizard.Application

@Override 
public void run(SomeConfigThatExtendsConfiguration config, Environment environment) throws Exception { 
    .... 
    environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class)); 
} 
+1

qui a été fixé immédiatement !!!! Merci!! :) – MickeyThreeSheds

+0

@MickeyThreeSheds Bon à savoir. :) – nullpointer