我需要一种方法从我的grapqh-java impl向我的其他端点发送用于身份验证和授权的http头。我正在GraphQL服务层进行身份验证和授权,但它很成功。现在我需要将相同的标题传递给我的所有其他端点。有没有办法可以做到这一点。 Grapqhl - Spring Boot 休息端点 - Dropwizard
答案 0 :(得分:1)
在执行查询时,可能只需将所需的特定于用户的数据附加到GraphQL上下文中,例如:
graphQL.execute(queryString, context);
context
可以是任何对象,包含令牌,Cookie,会话数据,HttpServletRequest
等
然后,使用它从DataFetcher
s(a.k.a。解析器)发送正确的标题:
public Object get(DataFetchingEnvironment environment) {
Map<String, Object> context = environment.getContext();
//get tokens, session data or whatever you need from the context to create the headers
List headers = ...;
return callRestWithHeaders("/rest/example", headers);
}
最好通过合成,继承或AOP风格在一个地方执行此标题准备逻辑。