【发布时间】:2021-06-05 18:11:59
【问题描述】:
我在我的 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 更安全。
【问题讨论】:
-
嗯,最近的版本真的不应该发生这种情况。 Spring Security 应该透明地工作。是否有可能在某个地方看到您的项目?或者,如果没有,我能否麻烦您举一个重现该问题的示例,我会为您解决问题?我预计会发生这种情况的唯一情况是,如果您使用
GraphQLSchemaGenerator#withOperationsFromSingleton手动注册 bean,但由于您提到您使用的是启动器,我认为这不是您在做的事情。 -
是的,我可以在 github 的 repo 中添加你。请分享您的用户名
-
是@kaqqao,和这里一样
-
已添加。还有一个单独的 graph-impl 分支用于测试。
标签: spring-security graphql graphql-java graphql-spqr graphql-spqr-spring-boot-starter