0

我使用Quarkus 1.6.1.Final版本和使用SmallRye GraphQL的 GraphQL 实现。我的目标是定义逻辑来检查对端点的每个请求(查询+突变)的用户权限。/graphql所以,我试图找到类似 jax-rs 的东西,ContainerRequestFilter但对于 GraphQL。你有什么想法吗?我试图定义ContainerRequestFilter,但它只捕获 RestEasy 请求而不是 GraphQL 请求。

4

1 回答 1

0

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

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

package org.acme.reactive.routes;

import io.vertx.ext.web.RoutingContext;

public class MyFilters {

    @RouteFilter(100) 
    void myFilter(RoutingContext rc) {
       // Put your logic here

       // continue the filtering of the request
       rc.next(); 
    }
}

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

于 2020-10-22T12:46:33.950 回答