Wie Abfangen, REST-Endpunkt zu erhalten, werden alle Header?

Mein Aktueller code ist

@Path("login")
@RequestScoped
public class LoginResource {

    @GET
    @SecurityChecked
    public Response getUser(@HeaderParam("AUTH") @Nonnull final String authToken) {
        return Response.ok("authenticated successfully.").build();
    }
}

sowie @SecurityChecked ist benutzerdefinierte annotation als

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.interceptor.InterceptorBinding;

@Inherited
@InterceptorBinding
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface SecurityChecked {

}

- und Interceptor-Klasse als

@Interceptor
@SecurityChecked
public class SecurityCheckInterceptor {
    private static final Logger LOGGER = LoggerFactory.getLogger("SecurityCheckInterceptor");

    @AroundInvoke
    public Object validateUser(final InvocationContext context) throws Exception {

        final Object[] params = context.getParameters();

        LOGGER.info("Authentication token: " + Arrays.toString(params));
        return context.proceed();
    }
}

Wenn ich es laufen sehe ich

 Authentication token: [1a629d035831feadOO4uFReLyEW8aTmrCS]

Problem?

- In meinem Ressource-Klasse, die ich zu bestehen hatte die @HeaderParam parameter

- Wie kann ich Lesen Sie alle HTTP Header kommt vom client?

Ideal?

- Wenn die getUser() keine @HeaderParam Eingang und

- Interceptor sollte in der Lage sein, um Ihnen all die HTTP Header

Wie kann ich das tun?

  • Haben Sie versucht, um zu injizieren, HttpHeaders in Ihrem Interceptor? (über @Context private HttpHeaders httpHeaders;)
InformationsquelleAutor daydreamer | 2013-08-20
Schreibe einen Kommentar