如何解决具有弹簧安全性的 JWT 身份验证 graphql-spqr
我在 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 更安全。
解决方法
编辑:GraphQL SPQR Spring Boot starter v0.0.6 解决了该问题,应该可以立即使用。
这是启动器中的一个错误。当使用 JDK 代理(而不是 CGLib)时,它无法正确检测类型。我会确保在下一个版本中修复这个问题。 有几种方法可以暂时解决这个问题,但不幸的是,它们都不是很好。
你可以例如强制 Spring 使用 CGLIB,例如
@EnableAspectJAutoProxy(proxyTargetClass = true)
但这可能具有广泛的影响,因此我建议您稍等片刻。我将在几天内发布带有修复的新版本,因为这是一个非常重要的错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。