1

我在我的 spring boot 应用程序中使用 graphql-spqr-spring-boot-starter,版本 0.0.5。

@GraphQLApi 和 @GraphQLQuery 工作正常,我也在 /gui 上获取数据。

但是正如许多人所面临的那样,我正在尝试在 graphql 服务器调用上应用身份验证部分。我在我的应用程序中使用 JWT 令牌进行 REST API 授权/身份验证。

所以我有令牌,我想它也可以在这里用于验证。

我试过使用:

@PreAuthorize("hasRole('ROLE_RECRUITER_HR')")

但它给出了编译时错误:

io.leangen.graphql.metadata.exceptions.TypeMappingException:com.sun.proxy.$Proxy90 类型的注册对象似乎是动态生成的代理

对于这些和其他可能的问题,使用像 spring-boot-starter 这样的包装器 graphql 库更好,还是使用我手中更多步骤的 graphql-spqr 更安全。

4

1 回答 1

0

编辑GraphQL SPQR Spring Boot starter v0.0.6解决了这个问题,应该可以开箱即用。

这是启动器中的一个错误。当使用 JDK 代理(而不是 CGLib)时,它不能正确检测类型。我将确保在下一个版本中修复此问题。有几种方法可以暂时解决这个问题,但不幸的是,它们都不是很好。

例如,您可以强制 Spring 使用 CGLIB,例如

@EnableAspectJAutoProxy(proxyTargetClass = true)

但这可能具有广泛的影响,因此我建议您稍等片刻。我会在几天内发布一个带有修复的新版本,因为这是一个非常重要的错误。

于 2021-03-07T20:41:26.077 回答