Méthode personnalisée d'Annotation à l'aide de Jersey AbstractHttpContextInjectable ne fonctionne pas

Je veux restreindre certaines méthodes si elles sont accessibles de façon non sécuritaire. Je suis de la création d'une annotation @Secure qui vérifie si la demande a été transmis sur des canaux sécurisés. Cependant, je ne peux pas créer une méthode injectable qui s'empare de la HttpContext de la demande.

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Secure {
}
public class SecureProvider<T> implements InjectableProvider<Secure, AbstractResourceMethod> {
@Override
public ComponentScope getScope() {
return ComponentScope.PerRequest;
}
@Override
public Injectable<?> getInjectable(ComponentContext componentContext,
Secure annotation,
AbstractResourceMethod method) {
return new SecureInjectable();
}
}
public class SecureInjectable<T> extends AbstractHttpContextInjectable<T> {
@Override
public T getValue(HttpContext context) {    
//validation here
return null;
}
}

Je suis en utilisant le Dropwizard cadre, l'initialisation des Fournisseurs devrait être aussi simple que:

environment.addProvider(new SessionRestrictedToProvider<>(new SessionAuthenticator(), "MySession"));
environment.addProvider(new SecureProvider<>());
environment.setSessionHandler(new SessionHandler());

Utilisation:

@Resource
@Path("/account")
public class AccountResource {
@GET
@Path("/test_secure")
@Secure
public Response isSecure() {
return Response.ok().build();
}
}

À ce point, je suis en supposant qu'une HttpContext Injectable ne fonctionne pas sur une méthode, mais je suis à une perte quant à ce que d'autres options que je pourrais utiliser pour mettre en œuvre cette annotation.

À partir de votre exemple, je n'ai pas vraiment l'objectif que vous essayez d'atteindre. Ne vous souhaitez restreindre l'accès à certaines méthodes (url) si elles sont en cours d'accès non sécurisé manière, ou que vous aimeriez avoir injectable valeur booléenne (fournie comme argument à la méthode) représentant le type de demande sécurisé ou non sécurisé?
Je veux restreindre certaines méthodes si elles sont accessibles de façon non sécuritaire. Désolé, j'aurais dû faire plus clair!

OriginalL'auteur IAE | 2013-11-05

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *