如何为GraphQL请求定义HTTP过滤器?

问题描述

我使用Quarkus 1.6.1.Final版本和使用SmallRye GraphQL的GraphQL实现。我的目的是定义逻辑,以检查对/graphql端点发出的每个请求(查询+变异)的用户权限。因此,我正在尝试为GraphQL找到类似于jax-rs ContainerRequestFilter的东西。您对此有任何想法吗?我尝试定义ContainerRequestFilter,但它仅捕获RestEasy请求,而不捕获GraphQL请求。

解决方法

我自己正在调查。似乎GraphQL直接注册了Vert.X路由调用[1],而不是使用Undertow(servlet)或RestEASY(jaxrs)。这样一来,据我所知,它可以更轻松地完成部分结果之类的事情。

您将要使用RouteFilter批注查看拦截Vert.X请求。我已经包含了下面的链接,但是它的工作原理与jax-rs中的ContainerRequestFilter相似。我已经从Quarkus帮助指南[2]中复制了示例代码,以提供一个简单的示例:

12:50:52 BUILD FAILED

12:50:52 /var/lib/jenkins/workspace/HOM_UI_To-Q1N1-175/hom/homr2/build.xml:166: Problem: failed to create task or type mxmlc

12:50:52 Cause: The name is undefined.

12:50:52 Action: Check the spelling.

12:50:52 Action: Check that any custom tasks/types have been declared.

12:50:52 Action: Check that any / declarations have taken place.

1:https://github.com/quarkusio/quarkus/blob/master/extensions/smallrye-graphql/runtime/src/main/java/io/quarkus/smallrye/graphql/runtime/SmallRyeGraphQLRecorder.java

2:https://quarkus.io/guides/reactive-routes#intercepting-http-requests