【问题标题】:Spring Boot - Graphql - Access Headers from arbitrary resolver codeSpring Boot - Graphql - 从任意解析器代码访问标头
【发布时间】:2018-09-08 18:57:48
【问题描述】:

我正在使用 GraphQL(Spring Boot、Kotlin),但我有一个特定的标题问题。

我们需要客户端发送我们组合起来检索内部敏感数据的三条信息。然后在解析器代码中使用该数据。

从 REST 中获取标头就像 @RequestHeader 一样简单,但在 GraphQL 中它已被证明相当具有挑战性。有没有办法保存标题以检查我需要的三条信息?

我仔细研究了 Spring Security,但我不知道如何让自定义方法在我的方法链中工作,更不用说以我可以从域层访问它们的方式保存标头了。

我总是可以简单地将身份验证请求为 GraphQL 类型,但这会给客户端带来相当大的负担并使架构复杂化。

欢迎任何和所有反馈。

【问题讨论】:

  • 如果我知道您想将请求标头保存到 graphql 中,那么您可以首先执行类似的操作,您需要创建 genericfilterbean,然后从那里获取请求对象,然后获取您想要的内容并导入到 graphql调用 chain.dofilter(..) -> 这使系统继续订购其他过滤器,您可以在所有过程完成后搜索数据。检查baeldung.com/spring-security-custom-filter

标签: spring-boot kotlin http-headers graphql


【解决方案1】:

GraphQL 有一个 FetchDataEnvironment。您可以通过将 FetchDataEnvironment 作为任何解析器/查询中的最后一个变量来使用它。然后,只需调用 environment.getContext<GraphQLEnvironentClass>().getHttpServletRequest.headers()

致未来的任何人 - 很抱歉这段代码不准确,但您在 IDE 中的强输入会告诉您我的意思。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2020-01-18
    相关资源
    最近更新 更多