Ich habe eine Spring Boot-Anwendung mit Resteasy-Feder-3.0.19 und jboss-Jaxrs-api_2.0_spec-1.0.0.Spring RestEasy Interceptor
Ich möchte alle restlichen Anrufe für die Autorisierung abfangen.
Der Interceptor wird nicht aufgerufen. Wie kann ich den @Path Annotation-Wert der Zielmethode im Interceptor erhalten?
Muss ich dies in der Spring Boot App registrieren?
@Provider
public class AuthorizationtInterceptor implements ContainerRequestFilter{
/**
*
*/
public AuthorizationtInterceptor() {
// TODO Auto-generated constructor stub
}
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
String method = requestContext.getMethod();
UriInfo uriInfo = requestContext.getUriInfo();
// Need the target method @Path annotation value ....
}
}
Zielruhe Klasse,
@Named
@Singleton
@Path(ROOT_PATH)
public class WebController {
@GET
@Path(TEST_PATH)
@Produces(MediaType.APPLICATION_JSON)
public Response getUser(@Context final HttpServletRequest request) {
}
}
Es wird nach der Registrierung des Filters aufgerufen, als ob wir andere Filter in der Klasse mit @Configuration Annotation registrieren würden. Pfadpfad = resourceInfo.getResourceClass(). GetAnnotation (Path.class); gibt Klassenannotation zurück, nicht die Methode, die übereinstimmt. Ich brauche auch die HttpServletRequest, also verwende ich Kontext private HttpServletRequest Anfrage ;. Ist das ok? – user1578872
@ user1578872 Ja, Sie können den 'HttpServletRequest' mit' @Context HttpServletRequest request' injizieren. Eine vollständige Liste der Typen, die mit '@ Context' injiziert werden können, finden Sie in dieser [Antwort] (http://stackoverflow.com/a/35868654/1426227). –