GraphQL权限文档

GraphQL权限文档,graphql,graphql-js,graphql-java,Graphql,Graphql Js,Graphql Java,如何记录某些集合只能由具有相同权限/角色的用户访问或更改,例如,只有经过身份验证的用户才能编写注释?将graphql中的数据视为基本上依赖于查看器,这很有启发性 在后端建立登录用户,然后将前端代码作为当前用户的函数呈现 因此,在graphql解析器中,您将获取与该用户关联的数据,其中一个字段可能是该用户的权限。然后,将相关的道具传递到前端框架,并呈现与此人相关的任何内容。在您指定的情况下,如果用户缺少某种级别的身份验证,您可能会忽略呈现注释框。将graphql中的数据视为基本上依赖于查看器,这很

如何记录某些集合只能由具有相同权限/角色的用户访问或更改,例如,只有经过身份验证的用户才能编写注释?

将graphql中的数据视为基本上依赖于查看器,这很有启发性

在后端建立登录用户,然后将前端代码作为当前用户的函数呈现


因此,在graphql解析器中,您将获取与该用户关联的数据,其中一个字段可能是该用户的权限。然后,将相关的道具传递到前端框架,并呈现与此人相关的任何内容。在您指定的情况下,如果用户缺少某种级别的身份验证,您可能会忽略呈现注释框。

将graphql中的数据视为基本上依赖于查看器,这很有启发性

在后端建立登录用户,然后将前端代码作为当前用户的函数呈现


因此,在graphql解析器中,您将获取与该用户关联的数据,其中一个字段可能是该用户的权限。然后,将相关的道具传递到前端框架,并呈现与此人相关的任何内容。在您指定的情况下,如果用户缺少某种级别的身份验证,您可能会忽略呈现注释框。

从graphql java v4.0开始,可以轻松筛选模式以获得操作可见性。通过这种方式,您可以根据每个用户的访问权限向他们提供不同的模式,用户只能看到他们实际可以执行的操作。因此,整个过程变得完美地自我记录

它看起来像:

//create an implementation that limits certain operations based on their name
//you can also provide a completely custom implementation
GraphqlFieldVisibility blockedFields = BlockedFields.newBlock()
                .addPattern("Character.id")
                .addPattern("Droid.appearsIn")
                .addPattern(".*\\.hero") // it uses regular expressions
                .build();

//create a role-specific schema based on the global one
GraphQLSchema schema = GraphQLSchema.newSchema(globalSchema)
                .fieldVisibility(blockedFields) //apply restrictions for this user
                .build();

从现有模式创建新模式是一项非常廉价的操作。例如,您可以在会话中保留特定于用户/角色的模式。甚至在每个请求上重新创建一个也不是什么大不了的事。

从graphql java v4.0开始,可以轻松过滤模式以获得操作可见性。通过这种方式,您可以根据每个用户的访问权限向他们提供不同的模式,用户只能看到他们实际可以执行的操作。因此,整个过程变得完美地自我记录

它看起来像:

//create an implementation that limits certain operations based on their name
//you can also provide a completely custom implementation
GraphqlFieldVisibility blockedFields = BlockedFields.newBlock()
                .addPattern("Character.id")
                .addPattern("Droid.appearsIn")
                .addPattern(".*\\.hero") // it uses regular expressions
                .build();

//create a role-specific schema based on the global one
GraphQLSchema schema = GraphQLSchema.newSchema(globalSchema)
                .fieldVisibility(blockedFields) //apply restrictions for this user
                .build();
从现有模式创建新模式是一项非常廉价的操作。例如,您可以在会话中保留特定于用户/角色的模式。每次请求都重新创建一个也不是什么大不了的事