我已经将我的spring boot应用程序与graphql-spqr-spring-boot-starter https://github.com/leangen/graphql-spqr-spring-boot-starter集成在一起,我需要找到一种方法来禁用graph QL模式自省,因为这是生产中的一个安全问题。
schemaBuilder。fieldVisibility已弃用。
图ql spqr 0.10
@Bean
public GraphQLSchema graphQLSchema(GraphQLSchemaGenerator schemaGenerator) {
schemaGenerator.withSchemaProcessors((schemaBuilder, buildContext) -> {
schemaBuilder.codeRegistry(
buildContext
.codeRegistry
.fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY)
.build()
);
return schemaBuilder;
});
return schemaGenerator.generate();
}
这似乎是可行的,SpqrAutoConfiguration类中有一个bean可以从generator对象生成Graphql模式
@Bean
public GraphQLSchema graphQLSchema(GraphQLSchemaGenerator schemaGenerator) {
schemaGenerator.withSchemaProcessors((schemaBuilder, buildContext) ->
{
schemaBuilder.fieldVisibility(new NoIntrospectionGraphqlFieldVisibility());
return schemaBuilder;
});
return schemaGenerator.generate();
}
我用的是graphql-spqr 0.9.9和graph QL-spqr-spring-boot-starter 0 . 0 . 4,但是代码库改成了graphql-spqr 0.10。我将尝试涵盖这两种情况,但是请记住,您可能需要稍微调整一下代码片段。
在Graphql spqr spring boot starter中,GraphQLSchemaGenerator
是一个用于生成GraphQSchema的bean。它在
io.leangen.graphql.spring.autoconfigure中定义。基本自动配置
(v0.10)或io.leangen.graphql.spqr.spring.autoconfigure。SpqrAutoConfiguration
(v0.9)。
您需要提供自己的GraphQLSchemaGenerator bean,该bean将为自省查询设置GraphqlFieldViality。根据这个问题(由google:https://webcache.googleusercontent.com/search?q=cache: 8VV29F3ovZsJ:https://github.com/leangen/graphql-spqr/issues/305缓存),有两种不同的方法来设置字段可见性:
@Bean
public GraphQLSchemaGenerator graphQLSchemaGenerator(SpqrProperties spqrProperties) {
GraphQLSchemaGenerator schemaGenerator = new GraphQLSchemaGenerator();
schemaGenerator.withSchemaProcessors((schemaBuilder, buildContext) ->
{
schemaBuilder.fieldVisibility(new NoIntrospectionGraphqlFieldVisibility());
return schemaBuilder;
});
//Other GraphQLSchemaGenerator configuration
}
@Bean
public GraphQLSchemaGenerator graphQLSchemaGenerator(SpqrProperties spqrProperties) {
GraphQLSchemaGenerator schemaGenerator = new GraphQLSchemaGenerator();
schemaGenerator.withSchemaProcessors((schemaBuilder, buildContext) ->
{
buildContext.codeRegistry.fieldVisibility(NoIntrospectionGraphqlFieldVisibility.NO_INTROSPECTION_FIELD_VISIBILITY);
return schemaBuilder;
});
//Other GraphQLSchemaGenerator configuration
}
您可以从默认实现中获得灵感,以正确设置 GraphQL 生成器。
我最近开始使用,发现它非常有趣。由于我的大多数应用程序都在中,我决定使用团队提供的spring boot starter项目进行快速设置。它附带了autoconf-spring设置,这使得查询endpoint更加容易。 在IDEA中花了几个小时进行项目设置后,我能够运行graphql示例应用程序。但我认为我的servlet仍然没有启用,只有endpoint正在运行,因为默认查询返回。 这是: 这就
我正在使用库将现有的 Rest API 项目迁移到图形QL。我有一段代码,用于从获取当前的 : 但是,这将为图形 QL 返回空值。我认为这是正确的,因为对于 GraphQL,我们必须使用
我使用以下库通过spring boot实现了GraphQLendpoint-https://github.com/leangen/graphql-spqr.我目前使用WebTestClient为RESTendpoint编写junits,并尝试以类似的方式为spqr编写junits,但这不起作用。 GraphQL支持所有endpoint的POST方法,那么有人知道如何通过web测试客户端传递查询和变
问题内容: 我可以使用启用自动重启功能,但是在停止容器后,如何关闭该属性? 我通常会运行网络服务器,通常会映射端口80: 但是有时候我想运行映像的较新版本,但又想保留旧容器。问题是,如果有多个带有的容器,则只会启动其中一个(随机?),因为它们都争用主机上的端口80。 问题答案: 您可以使用该选项(如@Shibashis所述),或更新重启策略(这需要docker 1.11或更高版本); 请参阅文档以
大家好,我正在windows 7中使用xampp v3.2.1。我想在windows启动时自动启动它,但无法启动。 我尝试了这里提供的解决方案,但在服务中找不到任何东西。 我在D驱动器中安装了xampp,这就是为什么apache和mysql在从run打开services.msc时不显示在服务中的原因。 我已经从xampp控制面板的config(配置)按钮尝试过了,我选中了autostart(自动启